전체 글

TenChoi's tech blog
· Cloud/aws
redis는 in-memory db다. aws에서는 elasticache로 명 칭이 돼있다 elasticache를 aws console에서 검색하여 redis cluster를 생성해 보자 기본설정 읽어보며 설정대로 진행한다. 일부 설정만 용도에 따라 변경하면 된다 clusterMode는 성능을 얼마나 쓰느냐에 활성화 여부를 나눈다 나는 refreshToken을 저장하는 용도로 redis를 사용할 예정이다 그렇다면 고성능이 필요하지 않다. 비활성화하고 진행한다 노드 유형은 비용을 고려하여 선택한다. awsRedis비용 vpc를 사용하는 경우의 예시를 추가한다 server는 public, priavte 중에 private subnet의 instance에 존재할 것이다 redis 또한 통신을 위해 privat..
aws rds 사용 도중에 issue가 발생했다 문서화를 진행해 보자 1. 문제정의 server에서 아래와 같은 error가 등장한다 Cannot execute statement in a READ ONLY transaction. Error: Cannot execute statement in a READ ONLY transaction. 2. 원인규명 aws rds의 setting 중에 "Automatic Minor Version Upgrades" 설정이 체크되어 있었다 upgrade scheduler에 시간을 보니까 에러가 시작된 시간과 일치한다 rds cluster의 spec은 instance가 총 3개이고 write 1개 read 2개이다 예상 시나리오는 아래와 같다 설정된 시간에 rds cluster..
· Cloud/aws
aws rds에는 매일 자동으로 백업하는 시스템이 있다. 그 백업 데이터를 snapshot이라고 부른다 그러면 snapshot으로 백업해 놓은 rdb정보를 되살리려면 어떻게 해야 할까? aws의 rds설정을 찾아보자 위 이미지 왼쪽 카테고리에 snapshot을 클릭하자 자동으로 생성된 snapshot들의 list가 존재한다 오른쪽 버튼을 통해 snapshot 복원을 클릭한다 정해져 있는 설정은 그대로 따라가면 된다. rdb version은 내가 복구하려는 rdb와 동일하게 설정하자 위의 public access에 예를 꼭 해줘야 한다. 안 하면 ec2를 제외한 외부에서 접근이 안된다 이후 default 그대로 진행하며. 최하단 버튼인 클러스터 복원 버튼을 누르면 끝이다 그러면 새로운 rdb instanc..
aws summit에서 첫 번째로서버리스 기반 SaaS 데이터 처리 및 데이터 웨어하우스 구축 사례'를 들었다 2개의 회사에서 기술적인 issue를 로직 변경 혹은 aws 기능 사용을 통해 해결했다는 내용이다 첫 번째 회사: 애이슬립 AI모델로 수면을 정확하게 분석하여 맞춤형 수면 서비스를 제공하는 Saas 서비스를 제공하는 회사 before 초기 architecture의 3가지 문제점이 있었다고 한다 설명이 전부 기억나지 않아 내 예상을 조합해서 설명한다 -> 요점은 client에서 user가 ui를 이용 시 요청하는 api와 수면 분석의 stream data를 저장하는 요청이 동일한 elb를 통해서 일어나고 아래 이미지와 같은 문제가 발생한다는 점이다 after 설명이 전부 기억나지 않아 내 예상을 ..
회사를 다니면 나에게 요구사항이 생긴다. srs 같은 게 따로 오지 않는다 뭔가를 만들고 싶다는 말이 올뿐 기획을 거치지 않고 오거나 내가 기획을 같이 고려해야 하는 등의 경우가 빈번하게 생긴다 그리고 언제까지 가능하냐고 나에게 묻는다. 일정을 관리할 땐 내가 대표던 신입사원이던 중요하지 않다 일정은 주변의 일까지 생각해서 답변해야 한다. 이해가 쉽게 예시를 들어 설명해 보자 내가 "오늘부터 자동차를 만들어야 한다는 업무"가 생겼다고 가정하자 어떻게 해야 할까? 그럼 내가 해야 할 일을 알아야 한다. 어떤 일인지 알지 못하면 일정을 산정할 수 없다 다짜고짜 나에게 날아오는 "언제까지 가능할까요?"를 대처하려면 논리적으로 대응해야 한다 pert나 cpm 같은 일정 산정 방법론도 참고하면 좋다 다만 말하고자..
Topic: What is the DIP DIP:Dependency Inversion Principle(의존성 역전 원칙) 고차원 모듈은 저 차원 모듈에 의존해서는 안 되며, 추상화된 것은 구체적인 것에 의존해서는 안 된다는 원칙이다 즉, 추상화된 인터페이스를 통해 두 모듈 모두 추상화에 의존해야 한다 chatGPT의 설명이다. 이게 뭔 말일까 chatGPT를 사용해서 sampleCode를 만들어보자 밑에 있는 첫 번째 sampleCode를 확인해 보자 public class OrderProcessor { private EmailSender emailSender = new EmailSender(); public void processOrder(Order order) { // 주문 처리 로직 emailSe..
oop란 object-oriented programming의 약어다 말하자면 현실의 객체를 지향하는 개발 방식이다. 이게 어떤 말일까 이해하기 쉽게 예시를 들어보자. 내가 차를 운전한다를 oop적으로 만들어보자 여기 사용되는 객체는 driver와 car가 존재한다 car에는 handle, accelerator, break, engine, key, gearShift 등의 장치가 존재한다 그럼 car는 각 장치 중 필요한 장치를 장착(상속)한다 위처럼 객체들을 나누어 하나하나 명확히 정의하고 개발하는 방식이라고 보면 된다 특징과 원칙이 있다. 4가지 특징은 아래와 같다 Encapsulation: 캡슐화 Abstraction: 추상화 Inheritance: 상속 Polymorphism: 다형성 특징의 상세가 ..
SRP: Single Responsibility Principle (단일책임의 원칙) class나 module은 하나의 책임을 가져야 한다는 말이다 이게 뭔소릴까 싶다 chat-gpt를 사용해서 sample code를 만들어보자 밑에 있는 첫 번째 sample code를 확인해 보자 class Customer: def __init__(self, name, email, phone): self.name = name self.email = email self.phone = phone def place_order(self, order_items): # 주문 정보 검증 및 처리 pass def send_email(self, subject, message): # 이메일 전송 pass customer라는 주체에 다른..
피드백이 어떻게 이뤄지면 가장 효율적일까 서양문화권이지만 netflix의 4A라는 규칙이 있다. 참조할만한 내용이라 가져왔다 AIM TO ASSIST : 도와줄 마음으로(선의)로 의견을 전달해라 ACTIONABLE : 이 피드백 상대에게 어떤 도움이 되는지 확실하게 알려줘라 APPRECIATE : 좋은 피드백을 받았다면 해준 사람한테 고마워해라 ACCEPT OR DISCARD : 피드백 자체를 스스로 고민해 보고 논의해라 위와 같은 회사 문화는 팀장급이 관리하거나 회사 내규로 진행하지 않으면 정착하기 어려운 문화다 물론 올바르게 시행만 된다면 훌륭한 효과를 볼 것도 분명하다고 생각한다 피드백 장단점 단점은 netflix는 인재밀도를 높이기 위해 기준치에 안 맞으면 내보내는 문화다 서로 피드백도 급이 맞아..
🔖 개요 예쁜 변수명을 지어봅시다 - 변수의 가독성 변수의 가독성은 주석없이 변수만으로 어떤기능인지 해석될때 가장 좋다고 생각합니다 이때 접두어를 유용하게 사용하면 변수명을 보다 효과적으로 사용할수있습니다 is + 단어 : ~ 인지 아닌 boolean 값을 리턴 e.g) isVaild : 이것이 유효한지? can + 단어 : ~ 가 가능한지 아닌지 boolean 값을 리턴 e.g) canRead : 읽을 수있는지?(권한) has + 단어 : ~ 가지고 있는지 여부 boolean 값을 리턴 e.g) hasItem : 그 가이템을 가지고있는지? on + 단어 : ~ boolean 값을 리턴 e.g) onClick : 버튼을 눌렀는지? get, put, create, req, num, count, min..
tenchoi
tenchoi