분석과 탐구

분석과 탐구

글또 8기 회고와 9기의 목표

서론 올해 8월, 글또 8기의 마지막 글을 작성한 이후, 9기를 시작하기 전까지 단 하나의 글도 작성하지 않았다. 8기를 시작했을 때의 목표는 꾸준한 글쓰기였지만, 마지막 글을 작성한 이후로 아무것도 작성하지 않음으로써, 그 목표를 성실하게 이루지 못했다는 사실을 깨닫게 되었다. 8기를 마무리하고, Node.js 강의 자료를 작성하거나 강의도 촬영하는 등 많은 시간을 할애하는 작업들이 있었다 보니 그동안 글쓰기를 멀리하고 있던 것 같다. 하지만, 이러한 일정 속에서도 과연 “정말로 글을 작성할 여유 시간이 없었을까?” 라는 질문을 자신에게 던져보게 되었지만, 그렇지 못했다는것을 바로 깨닫게 되었다. 이러한 고민 끝에, 다시금 글쓰기 습관을 형성하기 위해 글또 9기를 지원하게 되었고, 5개월이라는 길지만 ..

분석과 탐구

제로부터 시작하는 Prisma와 Nest.js

서론 Nest.js를 이용하여 여러 프로젝트를 진행하였다. 매 프로젝트마다 TypeORM, Mongoose 등 다양한 ORM을 이용하여 프로젝트를 진행하였는데, 여러 Nest.js 프로젝트들을 살펴보던 중 Prisma를 도입한 프로젝트가 상당히 많은 것을 확인하게 되었고, 도대체 어떤 장점이 있길래 기존 ORM을 대체하여 Prisma를 도입하였는지 궁금하게 되었다. 그래서, Prisma는 다른 ORM과 어떤 장단점이 존재하는지 확인해보고, 학습하게된 내용을 하나씩 정리하는 것을 목표로 글을 작성해보고자 한다. ORM(Object Relational Mapping) ORM(Object Relational Mapping)은 이름 그대로 객체(Object)와 관계형 데이터베이스(RDB, Relation Dat..

분석과 탐구

아키텍처 패턴 그리고 헥사고날 아키텍처

서론 이전 게시글에서는 도메인 주도 개발 (DDD)을 위해 Event Storming을 진행하였다. 그러나, 도출된 이벤트를 바탕으로 코드를 구현하는 과정을 처음 겪으면서 도메인 주도 개발을 진행하다보니 많은 시간을 소모하게 되었다. 레이어드 아키텍처를 이용하여 프로젝트를 진행하였지만, 외부 의존성을 어떻게 관리할 것인지, 유연한 설계를 위해 어떻게 코드를 구성하는 것이 가장 효과적인지에 대한 고민은 계속하게 되었다. 그리고, 현재 상황에서 가장 큰 고민은 모든 비즈니스 로직이 Service 계층에 존재하고, 다양한 유틸 라이브러리에 대한 의존성이 모든 계층을 통틀어서 더욱 커지게 되는 것이었다. 이러한 문제를 해결하기 위해 다양한 아키텍처 패턴을 고려하고 있었는데, 그중에서 Clean Architect..

분석과 탐구

제로부터 시작하는 DDD를 위한 이벤트스토밍

서론 최근 다양한 소프트웨어 개발 방법론에 대해서 탐구하고 있었다. 테스트 주도 개발(TDD, Test-Driven Development), 행동 주도 개발(BDD, Behavior-Driven Development)등의 개발 방법론을 살펴보던 중, 도메인 주도 설계(DDD, Domain-Driven Design)에 대한 내용을 찾아 보게되었는데, 소프트웨어의 복잡성을 줄이고, 비즈니스 로직의 이해를 향상시킬 수 있다는 것으로 알게 되었다. 소프트웨어의 복잡성을 어떤 방법으로 줄일 수 있는지에 대해 많은 관심이 있었는데, 다른 개발 방법론 보다 도메인 주도 설계에 대해 필요성을 더욱 느끼게 되어 가장 우선적으로 찾아보기 시작했다. 이번에는 그 도메인 주도 설계에 대해 찾아본 내용을 간략하게 정리하여, ..

분석과 탐구

Amazon API Gateway의 WebSocket API란 무엇인가?

서론 해당하는 프로젝트를 시작하기에 앞서 이전까지는 웹 소켓을 이용해 채팅 기능, 사용자 위치 갱신 기능 등 다양한 기능을 구현하였다. 그러나, 새로운 프로젝트를 진행하던 중 웹 소켓 하나의 기능을 위해 별도의 EC2 또는 ECS 인스턴스를 실행할 경우 비용이 증가할 것으로 판단하였다. 이에 따라, 웹 소켓 기능만 서버리스로 구현한다면 트래픽이 발생하는 경우에만 비용이 발생하므로, 효율적인 비용 관리가 가능할 것이라고 생각하였다. 따라서, 웹 소켓을 어떻게 서버리스로 구현할 수 있는지에 대해 탐구하게 되었다. WebSocket 웹 소켓은 MDN 페이지에 설명된 것처럼, 지속적으로 클라이언트와 서버간의 통신을 가능하게 하는 프로토콜이다.클라이언트가 서버에 연결하면, 해당 연결은 유지되며 서버는 원하는 때에..

분석과 탐구

1일 1커밋에서 벗어나기

서론 2021년 하반기부터 2023년 2월까지 진행한 1일 1커밋을 벗어난 이야기이다. 1일 1커밋을 진행하면서 어떤 것을 경험하였고, 어떤 성장을 하였는지 그리고 어째서 1일 1커밋에서 벗어났는지에 대해 이야기하고자한다. 1일 1커밋을 시작한 이유와 과정 Back-end 개발을 시작하고 개인 공부를 하던 중, “공부를 하는 습관을 가져야겠다”라는 막연한 생각을 한 적이 있었다. 그당시 많은 블로그에서 1일 1커밋을 지속하면서 많은 개발 지식을 습득하고, 꾸준하게 성장할 수 있는 습관을 가지게 되었다는것을 보게되었다. 그런 게시글을 보며 1일 1 커밋을 도입하게 된다면 나의 부족한 부분을 채우며 좋은 경험을 가져갈 수 있을것이라 생각하였고, 그렇게 1일 1커밋을 시작하게 되었다. 1일 1커밋을 겪으며 우..

분석과 탐구

"RxJS" 넌 도대체 뭐니?

최근 들어 다양한 타입스크립트 라이브러리들을 사용해보며 수많은 예시 코드들을 참조하고 실행하고 있다. 그러던 중 예시 코드에서 공통으로 사용되고 있는 RxJS 가 눈에 띄게 되었다. RxJS의 Observable이 무엇이길래 예시 코드에 작성해야 하고, 도대체 어떤 라이브러리 이길래 다른 수많은 라이브러리에서 참조하는 것인지 궁금해지기 시작했다. 그렇게 RxJS의 궁금증을 풀기 위한 글을 시작해보도록 하겠다. RxJS란 무엇인가? RxJS(Reactive Extensions for JavaScript)는 비동기 또는 콜백 기반 코드를 더욱 쉽게 작성할 수 있도록 Observable을 사용하는 반응형 프로그래밍용 라이브러리이다. RxJS는 다양한 이벤트들을 Observable 이라는 타입으로 추상화하여, ..

커스텀 리
'분석과 탐구' 카테고리의 글 목록