전체 글

Infrastructure

GitOps 뉴비의 Argo CD 여행기

서론 최근, AWS에서 운영되고 있는 EC2 인스턴스 기반의 서비스를 Kubernetes 기반의 AWS EKS로 마이그레이션하는 작업을 진행하고 있다. 기존 방식에서는 수동으로 EC2 인스턴스를 관리하면서 발생하는 복잡성과, 세부적인 AutoScaling 설정의 어려움이 많은 리소스를 소모하고 있었으며, 특히 지속적인 통합 및 배포(CI/CD)에 대한 부분이 많이 미흡하였다. 이러한 과정에서 멀티 컨테이너 환경에서 지속적인 통합 및 배포(CI/CD)를 어떻게 효율적으로 구성할 수 있는지에 대한 고민을 진행하게 되었다. 이전까지는 AWS ECS와 CodePipeline을 중심으로 한 CI/CD를 구성하였지만, Kubernetes 환경에서는 Argo CD라는 도구를 이용하여 지속적인 배포(CD) 과정을 관리..

Infrastructure/Terraform

VPC Peering, 너는 누구니? (feat. terraform)

📝 서론 최근 사내 인프라를 분석하던 중, 모든 서비스들이 가상 사설 네트워크인 VPC를 기반으로 분리되어 관리하고 있는 것을 알게되었다. 일반적으로 VPC는 사설 네트워크 인프라로, Public IP를 통하지 않으면 외부 AWS 리소스를 접근할 수 없는 것으로 알고 있는데, 일부 AWS 리소스가 다른 VPC의 AWS 리소스를 Private IP를 통해 사용하고 있는 것으로 확인하였다. 어떤 이유로 이런 동작이 가능한 것인지 조사해보니, VPC Peering 을 통해 다른 VPC에 속한 리소스들과 마치 동일한 VPC 내부에 있는 것처럼 통신이 가능하다는 것을 알게 되었다. 이번 글에서는 VPC Peering을 사용하기 위한 가장 기초적인 토대가 되는 VPC에 대해 살펴보고, Terraform을 이용하여 ..

분석과 탐구

글또 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..

커스텀 리
만능 코드공방