사내에 클라우드 환경을 도입할 때, 가장 이상적인 애플리케이션 아키텍처는 단연 마이크로서비스(Microservice, MSA)이다. 하지만 MSA를 통해 진정한 비즈니스 민첩성을 확보하려면 단순히 기술 스택을 바꾸는 것만으로는 부족하다. 기술 아키텍처의 변화를 넘어 개발 프로세스, 조직 구조, 그리고 개발 문화 전반의 근본적인 혁신이 반드시 동반되어야 한다.
- 👥 조직 (Organization) : 특정 비즈니스 도메인에 대해 자율적인 권한과 책임을 온전히 가지는 크로스펑셔널(Cross-functional) DevOps 조직
- ☁️ 인프라 (Infrastructure) : 트래픽 변화에 따라 언제든 쉽고 빠르게 확장(Scale-out)이 가능한 유연한 클라우드 인프라 구성
- ⚙️ 자동화 (Automation) : 개발 자원 및 도구의 자동화, 그리고 무중단 배포를 위한 CI/CD(지속적 통합/배포) 파이프라인 구축
- 🔄 개발 프로세스 (Process) : 짧은 주기로 빠르게 배포하고 고객의 피드백을 즉각 반영하는 애자일(Agile) 프로세스
- 🌱 개발 문화 (Culture) : 실패를 두려워하지 않고 공유, 협업, 학습을 통해 끊임없이 진화하는 오픈 개발 문화
- 📐 설계 방식 (Design) : 서비스 간 결합도를 낮추기 위한 데이터 중복 허용 및 결과적 일관성(Eventual Consistency) 추구
👥 조직(Organization)
이러한 조직의 변화는 단순히 1) 개발 속도의 극대화를 넘어, 팀 스스로가 서비스에 대한 2) End-to-End(기획부터 운영까지) 책임감을 가지게 만들며, 3) 장애 발생 시 즉각적이고 유연한 개선을 가능하게 하는 핵심 원동력이 된다.
☁️ 인프라 (Infrastructure)
⚙️ 자동화 (Automation)
🔄 개발 프로세스 (Process)
- 왼쪽은 waterfall 프로젝스이고 오른쪽은 애자일 프로세스이다.
- Upfront Plan(게획을 빡빡하게 세움, 왼쪽) / Evolutionary Plan(점진적인 플랜, 오른쪽)
- 요즘 시대는 비즈니스가 빈번하게 변경하기 때문에 waterfall을 대응하기 어려움
- 왼족은 품질을 포기하고, 오른쪽은 범위를 조정
🌱 개발 문화 (Culture)
- DevOps 개발 문화 : 신뢰와 협업의 개발 문화
- 개발에서 운영까지의 신속한 가치 흐름 생성
- 지속적인 피드백 제공, 빠른 문제 감지 및 복구
- 자동화 테스트, 피어 리뷰
- 피드백을 통한 개선
- 생산적인 신뢰/협업 문화 생성
- 내부 기술 컨퍼런스
- 끊임없는 학습
- 실험, 위험 감수/ 조직 학습
- 비난하지 않는 post-mortems(개인적인 비난하기 보다는 어떤 프로세스가 문제가 있고 개선해야 하는지 초점을 둔다. )
📐 설계 방식 (Design)
기존의 설계 방식은 데이터 중심으로 이루어졌다. 과거에는 스토리지 비용이 매우 비쌌기 때문에 데이터 중복을 최소화하는 최적화가 필수적이었고, 이로 인해 서비스는 쪼개더라도 데이터베이스는 하나로 통합하여 운영하는 것이 일반적이었다. 하지만 MSA에서는 서비스별로 저장소까지 완전히 격리하는 것을 원칙으로 한다. 이로 인해 발생하는 데이터 불일치 문제는 즉각적인 일관성 대신, 시간이 지나면 결국 일치하게 되는 '결과적 일관성(Eventual Consistency)' 모델을 통해 해결한다.
또한 MSA는 특정 서비스의 장애가 전체 시스템으로 번질 수 있는 구조적 특성을 가진다. 따라서 실시간 모니터링은 선택이 아닌 필수이며, 특정 서비스 다운 시 호출 연쇄를 차단하고 시스템 전체의 가용성을 보호하기 위해 '서킷 브레이커(Circuit Breaker)' 패턴을 적극적으로 활용하여 대응해야 한다.
0 댓글