본문 바로가기

프로젝트 삽질기15 (feat 전략 패턴 활용) 들어가며NestJS와 TypeORM을 활용하여 프로덕트를 만들고 있습니다. 비즈니스 로직을 구성하는데, if else if 문이 계속해서 추가되다 보니 코드의 가독성이 좋지 못한 문제가 발생했습니다. if - else 문을 개선하기 위해 노력하면서 전략 패턴에 대해 알 수 있었습니다. 이번 글은 전략 패턴을 NestJS에 적용하기 위해 노력하면서 작성된 글입니다.        요구 사항 분석유저를 멘션 할 수 있는 기능을 개발해야 했습니다. 멘션 기능을 구성하기 위해선, 먼저 유저 닉네임 검색 시스템을 개발해야 했습니다.      예를 들어 "@검색어"를 입력했을 때, 검색어와 관련된 유저의 닉네임의 목록들이 노출되어야 했습니다. 만약 검색어를 포함하지 않고, "@"만 입력했을 경우엔, 한 번이라도 검색..
프로젝트 삽질기14 (feat 전략 패턴) 들어가며NestJS와 TypeORM을 활용하여 프로덕트를 만들고 있습니다. 비즈니스 로직을 구성하는데, if else if 문이 계속해서 추가되다 보니 코드의 가독성이 좋지 못한 문제가 발생했습니다. if - else 문을 개선하기 위해 노력하면서 전략 패턴에 대해 알 수 있었습니다. 이번 글은 전략 패턴에 대해 공부하고, 전략 패턴을 적용하기 위해 노력하면서 작성된 글입니다.        If문의 증가API를 개발하면서, 기획의 요청이 들어오면 API의 동작 방식을 계속해서 변경해야 했습니다. if문을 사용하여 API 동작을 제어했는데, 추가적인 조건들이 계속해서 들어올 때마다 if-else if 문이 점점 쌓여가는 문제가 발생했습니다. 예를 들어 조종석 Class에서 조종석의 종류에 따라 방어력이 바..
프로젝트 삽질기13 (feat TypeORM IN 커스텀 정렬) 들어가며NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. TypeORM을 활용하여 IN Query를 구성하면서, 데이터를 특정 순서에 맞게 정렬해서 조회해야 하는 상황이었습니다. 어떻게 하면 데이터를 특정 조건에 맞게 순차 조회할 수 있을지 알아보다 커스텀 정렬에 대해 알 수 있었습니다. 커스텀 정렬을 활용한다면, 특정 순서에 맞게 정렬된 데이터를 조회할 수 있었습니다. 그럼 TypeORM에서 커스텀 정렬은 어떻게 구성할 수 있는지 알아보겠습니다.              array_positionarray_position은 PostgreSQL에서 제공하는 내장 함수 중 하나입니다. array_position 함수는 아래와 같은 문법을 가집니다:  array_posi..
프로젝트 삽질기12 (feat Date) 들어가며날짜와 관련해서 아리송한 것들이 많았습니다. DB의 createdAt 컬럼 데이터를 조회했을 때 '2023-02-13T11:57:33:05.442Z' 라고 출력된다면 여기서 Z는 무엇인지, UTC는 무엇인지 정확하게 알지 못했습니다. 심지어 Javascript의 Date는 불변이 아니라는 이야기를 종종 들었는데, 불변이 아닌 게 어떤 문제가 있는 건지 알 수 없었습니다. 이번 기회에 Date에 대해 정리해 봐야겠다고 생각했습니다. 이 글은 Date에 대해 공부하며 작성됐습니다.      Date자바스크립트로 알고리즘을 공부하다 보면, Date Type을 활용하는 문제가 꼭 한 문제씩 나옵니다. 문제를 풀기 위해 Date 객체 중에서 이런저런 메서드를 잘 조합하다 보면 원하는 데이터를 얻을 수 있는..
프로젝트 삽질기11 (feat EC2 크레딧) 들어가며AWS EC2를 활용해서 서버를 관리하고 있습니다. t2 micro를 활용해서 서버를 관리하던 도중, 갑자기 알 수 없는 이유로 502 에러가 발생하고 있었습니다. 서버 코드의 문제는 아니었는데, 왜 문제가 되는지 도저히 알 수 없었습니다. 삽질 끝에, EC2 인스턴스 타입 때문에 문제가 발생한다는 것을 알 수 있었습니다. 어떤 문제를 겪었는지, 그리고 이 문제를 어떻게 해결했는지 공유하기 위해 이 글을 적습니다.          EC2 크레딧AWS 프리티어를 사용한다면, EC2를 구성할 때 흔히들 t2.micro를 활용해서 서버를 구축합니다. 공짜로 사용할 수 있으니, 편하게 사용하던 그때, 502 에러가 무수히 뜨면서 서버가 먹통이 되는 상황이 발생했습니다. CloudWatch로 확인해 보니,..
[회고] 2022년 하반기 - 다정함을 닮을 수 있다면 들어가며 계절에 상관없이 모두가 잠들어 있는 새벽이면 출근했던 당신과 가족을 위해 새벽 기도를 다니는 당신에게 다정한 인사를 건네본 적이 얼마나 있는지 생각합니다. 여전히, 오래, 그리고 소중하게 내 곁에서 나를 응원하는 사람에게 보답할 수 있는 삶을 살겠노라 다짐했지만 때론 삶의 풍파에 못 이겨 당신이 시야에 보이지 않는 순간이 있었습니다. 문득 집으로 향하는 길, 사진첩에 손주를 안고 있는 당신의 영상을 우연히 봤습니다. 조카의 울음소리 가득한 영상 속 당신의 얼굴에 있는 주름이 선명하게 보였습니다. 시야에 당신을 계속해서 담아둘 수 있도록 모니터 화면에 당신 모습을 걸어뒀습니다. 당신의 다정함을 조금이라도 닮은 사람이 되고 싶습니다. 다정한 사람이 되어 나의 도전을 응원하는 사람에게 보답하는 삶, ..
투박하지만 낭만적인 들어가며생일이 되면 어머니는 늘 94년 여름을 제게 이야기했습니다. 94년은 최악의 폭염이라고 불릴 만큼 더웠던 해였는데, 거짓말처럼 제가 태어나는 순간부터 선선한 바람이 불어왔다고 했습니다. 2022년의 여름도 94년과 비슷했습니다. 27일이 지나면서 거짓말처럼 시원한 바람이 불어왔습니다. 덕분에 잊고 지냈던 당신과의 약속이 생각났습니다. 당신과의 함께한 시간을 잊지 않고 기억하고 싶어 이 글을 씁니다.               투박하지만 낭만적인당신은 낭만적인 사람이었습니다. 8월 27일이 모두 지나갔을 때쯤이었을까요. 당신은 제게 집인 거 다 알고 있다며 빨리 나오라고 이야기했습니다. 편한 차림으로 나가니, 너를 위해 케이크를 준비했다며 케이크를 술 먹으면서 같이 먹자고 이야기했습니다. 개강을 앞두..
행동이 모여 브랜드를 만들 수 있다면 들어가며개발자로서 차별점은 어떻게 만들어가는 것인가 생각한 적이 있습니다. '그냥 하지 말라'라는 책을 읽고, 나만의 브랜드를 만들고 싶다고 생각했습니다. 그렇다면 나는 스스로 어떤 브랜드를 만들 수 있을까 고민한 지 반년 정도가 지났습니다. 그동안 어떤 고민을 해왔고, 어떤 노력들을 해왔는지 정리해보고 싶었습니다. 아직 고민의 답을 내진 못했지만, 나름대로 브랜드를 만들기 위해 노력한 과정이 담긴 글입니다. 언젠가 저만의 브랜드를 구축했을 때 이때 노력했기에 가능했다고 말하고 싶어 글을 씁니다.                 누군가의 시행착오를 줄여준다는 것개발자가 되기 위해 도전하면서 많은 시행착오를 겪었습니다. 다른 이들은 한 번 보면 바로 알 수 있는 내용도 수십 번의 삽질을 해야만 알 수 있었습니..
도전하며 건네는 작별 인사 들어가며인생을 바꾸기 위해 도전하는 삶은 가치 있는 일이라 생각합니다. 얼마 전, 개발자가 되기 위해 자신의 본업을 접어두고 개발 공부를 시작한 이들에게 응원의 한마디를 전할 수 있는 기회가 있었습니다. 숙고 끝에 '열등감'에 대해 이야기했습니다. 도전하다 보면, 많은 좌절을 느끼는 순간이 올 텐데 그때마다 타인과 비교할 필요 없이 자신의 길을 걸어 나가면 된다고 짧게 이야기했습니다. 이 말을 전하면서, '열등감' 때문에 힘들어했던 과거가 생각났습니다. 열등감보단 감사함을 느끼고 살고 있는 지금의 삶을 돌아보며. 나는 언제 열등감을 느꼈고, 이 열등감을 어떻게 극복했는지 글로 적어보고 싶었습니다. 경험을 공유한다면, 열등감 때문에 힘들어하는 누군가에게 도움이 될 수 있지 않을까 생각했습니다.       ..
프로젝트 삽질기10 (feat AWS SQS 적용) 들어가며리팩터링 하면서 AWS SQS를 활용한 기능을 개발하고 있습니다. 개발하는 과정에서, AWS SQS를 NestJS에서 어떻게 적용시킬 수 있는지 참고할 수 있는 자료가 거의 존재하지 않았습니다. 이번 기회에 직접 적용해보면서 삽질했던 과정을 정리하면 누군가는 제 글을 통해 도움을 얻을 수 있지 않을까 생각했습니다. Queue 생성은 해당 링크를 참고했고, Queue를 NestJS에서 활용하는 부분은 해당 링크를 참고했습니다.       AWS SQS 설정하기AWS SQS를 활용하기 위해 먼저 IAM 설정을 진행하겠습니다. IAM 설정먼저 Nestjs에서 AWS SDK를 활용하기 위해서는 AWS IAM에서 제공하는 액세스 키 및 시크리 키 값이 필요합니다. 키 값들을 받아오기 위해 먼저 IAM 설..