전체 글(108)
-
[MSA] MSA 개념과 아키텍처 적용
MSA 개념과 도입 배경MSA(Microservies Architecture)는 하나의 애플리케이션에 집중되어 있던 비즈니스 기능을 독립적인 서비스 단위로 분리하고 서비스 간 통신을 통해 하나의 시스템을 구성하는 아키텍처이다. 각 서비스는 명확한 비즈니스 책임을 가지며, 독립적으로 개발하고 배포할 수 있는 특징이 있다. 또한, 서비스 별 처리량 및 트래픽에 따라 선택적이고 유연하게 확장할 수 있다는 장점이 있다. 다만, 서비스가 분리되면 서비스 간 네트워크 통신, 데이터 일관성, 장애 전파 등 기존 모놀리스 환경에서 상대적으로 단순했던 것들에 대해 추가로 고려해야 할 필요가 있다. 이번 프로젝트에서는 단순히 애플리케이션을 여러 서비스로 나누는 것에 그치치 않고, DDD를 통해 정의한 바운디드 컨텍스트를 ..
15:41:30 -
[DDD] DDD를 적용한 UMS 도메인 설계 : DDD 도입 배경 및 전략적 설계
도입 배경UMS (Unified Messaging System)은 이메일, 문자, 카카오톡 등 다양한 메시징 채널을 하나의 시스템에서 통합 관리하고 발송할 수 있도록 지원하는 메시징 플랫폼이다. 이전 회사에서 UMS 시스템을 운영하며 여러 메시징 채널 비즈니스 로직이 하나의 모듈에 통합된 레거시 구조를 경험했다. 서로 다른 비즈니스 특성을 가진 채널들은 서로 공통 모듈과 데이터에 의존하고 있어 특정 채널의 기능을 분석하거나 수정할 때 다른 채널의 로직까지 함께 파악해야만 했고, 공통 모듈에 장애가 나면 다른 채널 발송에 장애가 전파가 되는 구조적은 한계를 경험했다. 이러한 운영 경험을 통해 메시징 통합 시스템을 비즈니스 성격이 다른 채널들을 분리하고 독립적인 개발과 확장이 가능한 아키텍처의 필요성을 느꼈..
2026.11.10 -
ID 생성 전략 - UUID, GUID, ULID, TSID, NANOID, KSUID, Snowflack...
개요분산 환경 및 고가용성 경험을 목표로 하는 마이크로서비스 프로젝트에 있어 ID 생성 전략은 무엇보다 중요함을 알고 있다. 키 값이 중복되거나 성능 이슈로 인한 장애 포인트가 늘어나기에 더더욱 그렇다.실제 업무에서는 UUID를 생성해 짧은 길이로 만들어 생성했지만 대량 트래픽 환경에서는 중복으로 인한 발송이 실패하고 장애로 이어졌다.또한, 기존 레거시 시스템에는 발송 일련 번호를 시간 기반에 sequence기반으로 생성했는데, 분산 환경에서는 장애 확률이 더더욱 올라갈 수 밖에 없다. 특시 시퀀스 기반은 발송 엔진이 두 대 이상에서 중복이 발생할 수 밖에 없다.UUID는 문자열 길이가 너무 길어 가독성이 떨어지고 DB에 저장하는데 있어 저장공간에 효율적이지 않아 지양하게 됨으로써 각 버전의 특징들과 U..
2025.11.12 -
[UMS MSA 구축 프로젝트]. Sprint1 회고록
1. 스프린트 개요스프린트 명Sprint1. 개발 환경 구축기간2025. 10. 01 ~ 2025. 10. 31참여인원1명내용팀 협업 기만 마련 및 개발 환경을 구축해 첫 개발 스프린트 준비 2. 프로젝트 진행 과정 1. 협업 방식 확립 ① Notion 템플릿 재정비 기존 Notion 템플릿은 한 페이지에 메뉴를 구성해서 관리하고 있었는데, 가시적이지 않고 복잡하며 필요한 페이지가 늘어갈 때 마다 분류 및 사용자 UI가 복잡해짐을 느꼈다.또한 문서도 중구난방 흩어져 관리되고 작업 관리를 어떻게 해야할 지 감이오지 않아 대시보드를 별도로 사용하지 않고 메뉴 구성을 별도 페이지로 만들어 사이드 메뉴 바에 노출되도록 하였다.메뉴를 크게 미팅 / 커뮤니티 / 스프린트 보드 / 워크스페이스로 분류하고 회의록과..
2025.11.03 -
[AWS] AWS Prviate 서브넷 망 생성기 - Bastion Host Server 구축
Bastion Host Server란?Bastion Host Server는 Public Subnet에 위치해 외부 인터넷 망과 내부 Private Subnet 간의 안전한 접속 통로 역할을 하는 보안 게이트웨이 서버이다.일반적으로 내부망(Prviate Subnet)에 있는 서버들은 보안을 위해 외부 인터넷에서 직접 접근할 수 없도록 설정되어있는데 Bastion Host Server를 통해 Private Subnet 내부 서버로 접근할 수 있다. Bastion Host Server 구축 개요Bastion Host Server를 구축하기 위해서는 기본적인 네트워크 개념과 AWS VPC 구조에 대한 이해가 필요한데, VPC를 Public Subnet과 Private Subnet으로 구성하고 Public Sub..
2025.11.01 -
[AWS] AWS Prviate 서브넷 망 생성기 - 개요
개요CI/CD 파이프라인을 위한 Jenkins구축을 위해 aws ec2 생성을 하고 도커 컨테이너로 (config서버와 유레카를 각각 분리하기 위해) 설치했는데, 해당 서브넷을 public망으로 구축하고 보안그룹도 누구든지 접근 가능하도록 설정했다.이는 보안상 매우 취약하며, 외부에서 작업 시 더욱 탈취 위험이 크기에 내부망에 재구축하였다.문제는 서브망 접근인데, 인프라 접근에 관한 요구사항을 아래와 같이 정리하였다.API gateway를 제외한 모든 애플리케이션은 내부망에 구축한다.Private 망은 팀원들만 접속가능하지만, 네트워크에 구애받지 않는다.내부 서비스들은 Private 서브넷 망에서만 통신한다.내부망의 Jenkins는 Github와 연결될 때만 외부 통신한다.aws 클라우드의 최소 비용으로..
2025.10.13