분류 전체보기

분석과 탐구

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

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

Infrastructure/Terraform

[Terraform] 이미 존재하는 AWS 리소스를 가져오기

서론 Terraform을 사용하면서 CLI를 잘못 사용하여 .tfstate파일에 배포된 정보가 반영되지 않거나, AWS Management Console에서 생성한 리소스를 놓치고 배포하게 될 상황을 겪었을 것이다. 그럴때마다 마주하는 ‘already exist …’ 에러를 AWS Management Console에서 수동으로 삭제하는 것 대신, Terraform CLI를 이용해 이미 존재하는 AWS 리소스를 Terraform 파일에 정의된 속성에 맞게 수정하는 작업을 진행할 예정이다. 위와 같은 에러는 AWS 리소스가 계정 내에서 고유한 이름으로 존재하는 서비스에서 발생하는데, 주로 ECR 저장소, S3 버킷과 같은 서비스에서 많이 볼 수 있다. 그렇다면, 어떻게 작업해야 이런 문제 상황을 해결할 수 ..

분석과 탐구

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커밋을 겪으며 우..

Infrastructure/Serverless Framework

[Serverless] Open Source Contributor의 첫걸음

이전 작성한 게시글에서는 Serverless Framework의 배포 과정 중 발생한 오류 상황과 그 해결 방법에 대해 작성한적이 있었다. 간단히 요약하자면, Serverless Framework의 배포 과정이 강제로 종료되면 AWS CloudFormation의 Stack이 비정상적으로 생성될 수 있고, 이 상태에서 다시 배포를 시도하면 “Stack … does not exist” 오류 메시지가 발생하게 된다. 이전 글을 작성한 후 겪었던 오류 상황과 해결 방법, 그리고 동일한 문제가 발생하지 않도록 수정하는 방법을 정리하여 Serverless Github Issue에 제출하였는데, Repo 관리자와 수정 방안에 대해 의견을 나눈 뒤, Pull Request에 대한 요구를 받게 되었다. 그렇게 오픈 소스..

Infrastructure/Serverless Framework

[Serverless] Stack <STAK_NAME> does not exist 디버깅

Serverless Framework를 이용한 작업을 진행하던 중, 갑작스럽게 배포가 진행되지 않는 상황이 발생하였다. 특이하게도 Nest.js 프로젝트의 코드 작업을 하지않고, Serverless의 설정값을 변경하던 중 발생하게 된 상황이라 더욱 이상하게 느껴졌다. 어떤 이유로 이런 에러가 발생하였는지 확인해보고, 어떤 해결 방안이 존재하는지 파헤쳐보도록 하겠다. 문제 상황 Nest.js 프로젝트의 코드 작업을 마무리하고, serverless.yml 파일에 정의된 속성값들을 수정하여 Lambda의 경량화를 진행하고 있던 와중 Service를 AWS Lambda에 배포하려 할 때, Stack prac-websocket-dev failed to deploy 라는 에러가 발생하였다. 상세한 에러 메시지를 확..

분석과 탐구

"RxJS" 넌 도대체 뭐니?

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

카테고리 없음

[글 쓰는 또라이가 세상을 바꾼다.] 8기를 시작하며

글또를 시작하게 된 계기 개발을 시작하는 사람들에게 알고 있는 지식을 전달하기 위한 자료를 작성하거나, 자신이 개발하며 겪었던 문제와 해결 방법에 대해 작성하곤 한다. 하지만 현재 작성하고 있는 자료들이 과연 타인이 보기에 이해하기 쉽고 내용 전달이 잘 이루어지고 있는지에 대한 의문이 조금씩 싹트기 시작했다. 그러던 중 블로그 글을 검색하다 글또를 알게 되었다. 주기적으로 글을 쓰고 서로의 글을 피드백하며 돕고 성장한다는 것에서 나를 성장 시킬 방법이라는 것을 깨닫게 되었고. 그렇게 8기를 지원하게 되었다. 목표 이번 글또에서 최종적으로 얻어가려는 목표를 세워 보았다. 1. 글을 작성하는 습관 가지기 2. 글을 쓰면서 가지게 되는 부담감 완화하기 3. 나의 생각을 명확하게 전달하기 무언가를 성공하거나 완..

카테고리 없음

한번의 Commit으로 여러개의 Commit Log 되돌리기

현재상황 이전에 진행하였던 nest-board-project Repository를 다시 진행하려 했을 때, Serverless Framework와 nest.js Package가 과거의 버전으로 설치되어 있었고, 일부 서비스가 CQRS Pattern으로 작성되어 있어 프로젝트의 패턴을 원하는 대로 수정할 수 없는 상태가 되어 있었습니다. 현재 nest-board-project Repository의 @nest/cqrs Package가 설치되기 전 상태로 되돌린 후 Serverless Framework와 nest.js의 버전을 올릴 수 있도록 수정이 필요한 상태입니다. 목표 nest-board-project Repository의 Git Commit Log를 남긴 상태에서 여러개의 Commit Log를 1개의 ..

항해99

항해99 수료 후 1년 ... 회고록

서론 항해99를 수료한 지 1년, 그리고 실제로 Back-end Engineer로써 업무를 하는 것 또한 1년이 지나기 일보 직전입니다. 부트캠프를 진행하기 전에는 Firmware를 제작하고, 간단한 Application을 만들면서, 멍하니 하루하루 시간을 보내고 있었던 나약한 개발자로 1년 6개월을 보냈었습니다. 새로운 기술에 대한 열망은 있었지만, 어떤 방향성으로 공부해야 하는지 알지 못했고, 그로 인해 명확한 목표가 존재하지 않았기 때문에 아무것도 하지 않고, 단순히 회사 일만을 하면서 시간을 보냈었습니다. 그러던 중 백엔드 개발자를 목표로 했었던 것은 그렇게 거창한 이유가 아니었고, 단순히 웹 개발의 세계는 어떨까 라는 궁금증으로 시작하였지만, 현재는 너무나도 좋은 선택이었다고 생각합니다. 수료 ..

커스텀 리
'분류 전체보기' 카테고리의 글 목록 (2 Page)