본문 바로가기

[Project] 프로젝트 삽질기44 (feat limit, take) 들어가며 NestJS와 TypeORM을 활용하여 프로덕트를 만들고 있습니다. TypeORM의 QueryBuilder를 주로 사용하는데요. 데이터 조회 쿼리를 구성하면서 테이블 join을 하는 과정에서 limit을 사용했더니, 원하는 데이터를 제대로 조회하지 못하는 문제를 발견했습니다. 어디서, 왜 이런 문제가 발생했는지 탐구하고 싶어 이 글을 적습니다. no offset 페이지네이션 API를 개발하면서, 성능을 개선시키기 위해 쿼리 실행 계획을 분석하면서 코드를 작성하고 있습니다. 기능 중, 유저 포인트 내역을 조회하는 기능의 성능 테스트를 위해 데이터베이스에 5만 개의 시드 데이터를 넣고 쿼리 실행 계획을 분석했습니다. 쿼리 실행계획을 보면서 offset을 활용하는 로직이 성능 상의 비효율을 내고 있다..
[네트워크] VPC 이해하기 (feat VPC 아키텍처) 들어가며 아키텍처를 설계하면서, 견고한 아키텍처를 설계하려면 어떻게 해야 할까 늘 고민하고 있습니다. 아키텍처의 네트워크 환경을 잘 구축하려면 어떻게 해야 할까 고민하던 중, VPC 개념에 대해 알 수 있었습니다. 이번 기회에 VPC를 적용해서 더 나은 서버구조를 설계하고 싶었습니다. 이 글을 시작으로 VPC에 대해 정리합니다. VPC VPC란 Virtual Private Cloud의 약자로, 가상으로 존재하는 데이터 센터라고 할 수 있습니다. AWS에서는 VPC를 아래와 같이 소개하고 있습니다. Amazon Virtual Private Cloud(VPC)를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝 하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. IP ..
[Project] 프로젝트 삽질기43 (feat EC2 크레딧) 들어가며 AWS EC2를 활용해서 서버를 관리하고 있습니다. t2 micro를 활용해서 서버를 관리하던 도중, 갑자기 알 수 없는 이유로 502 에러가 발생하고 있었습니다. 서버 코드의 문제는 아니었는데, 왜 문제가 되는지 도저히 알 수 없었습니다. 삽질 끝에, EC2 인스턴스 타입 때문에 문제가 발생한다는 것을 알 수 있었습니다. 어떤 문제를 겪었는지, 그리고 이 문제를 어떻게 해결했는지 공유하기 위해 이 글을 적습니다. EC2 크레딧 AWS 프리티어를 사용한다면, EC2를 구성할 때 흔히들 t2.micro를 활용해서 서버를 구축합니다. 공짜로 사용할 수 있으니, 편하게 사용하던 그때, 502 에러가 무수히 뜨면서 서버가 먹통이 되는 상황이 발생했습니다. CloudWatch로 확인해 보니, 특정 시간에..
[회고] 2022년 하반기 - 다정함을 닮을 수 있다면 들어가며 계절에 상관없이 모두가 잠들어 있는 새벽이면 출근했던 당신과 가족을 위해 새벽 기도를 다니는 당신에게 다정한 인사를 건네본 적이 얼마나 있는지 생각합니다. 여전히, 오래, 그리고 소중하게 내 곁에서 나를 응원하는 사람에게 보답할 수 있는 삶을 살겠노라 다짐했지만 때론 삶의 풍파에 못 이겨 당신이 시야에 보이지 않는 순간이 있었습니다. 문득 집으로 향하는 길, 사진첩에 손주를 안고 있는 당신의 영상을 우연히 봤습니다. 조카의 울음소리 가득한 영상 속 당신의 얼굴에 있는 주름이 선명하게 보였습니다. 시야에 당신을 계속해서 담아둘 수 있도록 모니터 화면에 당신 모습을 걸어뒀습니다. 당신의 다정함을 조금이라도 닮은 사람이 되고 싶습니다. 다정한 사람이 되어 나의 도전을 응원하는 사람에게 보답하는 삶, ..
[Project] 프로젝트 삽질기42 (feat 테스트 중 node.js 메모리 부족) 들어가며 Github action을 활용하여 CICD를 구축하는 과정에서 여러 삽질들을 반복하고 있습니다. 그중, CI 단계에서 테스트 코드를 수행하는 도중 테스트 코드가 제대로 동작하지 않는 문제를 발견했습니다. 이 문제를 다시는 겪지 않기 위해 문제를 정리하고, 이 문제를 어떻게 해결했는지에 대한 과정을 글로 정리합니다. 메모리 관리 Github action으로 테스트 코드를 실행하다 갑자기 테스트가 실패했다는 문구들이 보이기 시작했습니다. 분명 로컬 환경에서는 테스트 코드가 제대로 동작하는데 어떤 문제 때문인지 확인해보니 아래와 같은 알 수 없는 에러를 살펴볼 수 있었습니다. (node:1363) MaxListenersExceededWarning: Possible EventEmitter memory..
[Project] 프로젝트 삽질기41 (feat 계층형 & 클린 아키텍처) 들어가며 프로젝트를 개발하면서 계층형 아키텍처를 최대한 잘 구성하기 위해 노력했습니다. 개발을 꾸준히 하면서, 계층형 아키텍처에도 문제가 있을 수 있다고 생각했습니다. 어떤 점에서 문제를 겪었는지, 그 문제를 어떻게 해결할 수 있는지에 대해 이 글을 통해 작성해보고자 합니다. 이 글은 [Clean Architecture] 계층형 아키텍처의 문제점 글과 [Clean Architecture] 계층형 아키텍처의 문제점을 해결하는 육각형 아키텍처(헥사고날 아키텍처) 글을 참고해서 작성했습니다. 데이터베이스 주도 설계 NestJS로 서비스를 개발하면서 기존 코드를 계층별로 구분하여 작성하려고 노력했습니다. 처음 코드를 작성할 때는 큰 문제를 겪지 않았지만 비즈니스의 복잡도가 커지면서 조금씩 문제를 겪기 시작했습니..
[일기장] 투박하지만 낭만적인 들어가며 생일이 되면 어머니는 늘 94년 여름을 제게 이야기했습니다. 94년은 최악의 폭염이라고 불릴 만큼 더웠던 해였는데, 거짓말처럼 제가 태어나는 순간부터 선선한 바람이 불어왔다고 했습니다. 2022년의 여름도 94년과 비슷했습니다. 27일이 지나면서 거짓말처럼 시원한 바람이 불어왔습니다. 덕분에 잊고 지냈던 당신과의 약속이 생각났습니다. 당신과의 함께한 시간을 잊지 않고 기억하고 싶어 이 글을 씁니다. 투박하지만 낭만적인 당신은 낭만적인 사람이었습니다. 8월 27일이 모두 지나갔을 때쯤이었을까요. 당신은 제게 집인 거 다 알고 있다며 빨리 나오라고 이야기했습니다. 편한 차림으로 나가니, 너를 위해 케이크를 준비했다며 케이크를 술 먹으면서 같이 먹자고 이야기했습니다. 개강을 앞두고 바쁘다고 이야기하니..
[일기장] 행동이 모여 브랜드를 만들 수 있다면 들어가며 개발자로서 차별점은 어떻게 만들어가는 것인가 생각한 적이 있습니다. '그냥 하지 말라'라는 책을 읽고, 나만의 브랜드를 만들고 싶다고 생각했습니다. 그렇다면 나는 스스로 어떤 브랜드를 만들 수 있을까 고민한 지 반년 정도가 지났습니다. 그동안 어떤 고민을 해왔고, 어떤 노력들을 해왔는지 정리해보고 싶었습니다. 아직 고민의 답을 내진 못했지만, 나름대로 브랜드를 만들기 위해 노력한 과정이 담긴 글입니다. 언젠가 저만의 브랜드를 구축했을 때 이때 노력했기에 가능했다고 말하고 싶어 글을 씁니다. 누군가의 시행착오를 줄여준다는 것 개발자가 되기 위해 도전하면서 많은 시행착오를 겪었습니다. 다른 이들은 한 번 보면 바로 알 수 있는 내용도 수십 번의 삽질을 해야만 알 수 있었습니다. 모르는 것을 물어볼 ..
[자바스크립트] express 미들웨어 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. 아래의 글은 [Node.js] express 미들웨어란? 글을 보고 공부하며 정리한 글입니다. 자세한 내용은 해당 글을 참고해주세요. Express 미들웨어 미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어를 뜻합니다. 그럼 Express 프레임워크에서 말하는 미들웨어는 어떤 의미일까요? 이에 대해 알아보겠습니다. Express 공식문서에는 ..
[일기장] 도전하며 건네는 작별 인사 들어가며 인생을 바꾸기 위해 도전하는 삶은 가치 있는 일이라 생각합니다. 얼마 전, 개발자가 되기 위해 자신의 본업을 접어두고 개발 공부를 시작한 이들에게 응원의 한마디를 전할 수 있는 기회가 있었습니다. 숙고 끝에 '열등감'에 대해 이야기했습니다. 도전하다 보면, 많은 좌절을 느끼는 순간이 올 텐데 그때마다 타인과 비교할 필요 없이 자신의 길을 걸어 나가면 된다고 짧게 이야기했습니다. 이 말을 전하면서, '열등감' 때문에 힘들어했던 과거가 생각났습니다. 열등감보단 감사함을 느끼고 살고 있는 지금의 삶을 돌아보며. 나는 언제 열등감을 느꼈고, 이 열등감을 어떻게 극복했는지 글로 적어보고 싶었습니다. 경험을 공유한다면, 열등감 때문에 힘들어하는 누군가에게 도움이 될 수 있지 않을까 생각했습니다. 비교를 하..