주메뉴 바로가기 본문 바로가기

Cloud 개발 방법론 – 씨냅스 (CNAPS)

Cloud Native Application development in PaaS

마이크로서비스 아키텍처를 기반으로 비즈니스 도메인 모델을 설계하고, 자동화 도구를 활용하여
Cloud에 최적화된 서비스를 빠르고 효과적으로 개발할 수 있는 방법론입니다.

신규 개발 서비스

마이크로서비스 아키텍처
애플리케이션을 작고 독립된 서비스 단위로 개발/연계하여 전체 시스템을 중단하지 않고 작은 서비스 단위로 빠르게 변경, 배포, 대체, 확장 할 수 있습니다.
도메인 주도 설계
기술 중심이 아닌 비즈니스 중심 언어를 사용하여 이해관계자가 공통의 관점을 공유하여 소프트웨어의 복잡도를 줄이고 이해도를 높입니다.
자동화 도구
자동화 도구를 통해 생산성을 향상시킵니다. 모델 기반으로 코드를 자동 생성한 후 비즈니스 로직 및 주요 코드를 구현하여 반복/점진적으로 개선합니다.
마이크로서비스 아키텍처 (Microservice Architecture)

논리적/물리적으로 애플리케이션을 분리하여 개발하고, 독립된 서비스 간의 연계를 통해 빠르고 쉽게 변경/대체 가능한 서비스를 구현 합니다.

주요개념 01
REST API 마이크로서비스
  • RESTful 서비스 API

도메인 모델을 외부로 서비스 하기 위한 방식으로 RESTful API를 구현합니다.

주요개념 02
분산 거버넌스, 분권 데이터 관리

  • 서비스 일관성을 위한 기법 (이벤트 소싱, 보상 트랜잭션)
  • 이벤트 소싱 및 보상 트랜잭션 기법
  • 명령과 쿼리의 역할구분 (CQRS, Command Query Responsibility Segregation)
  • 다언어코드 지속성(Polyglot Persistence) 접근 방법

서비스 별로 데이터베이스를 독립적으로 유지하며 데이터 일관성(consistency)을 위한 처리는 서비스 간의 트랜잭션이 아닌 협업으로 해결합니다. 데이터 일관성 목표 달성 보다 비즈니스 흐름에 맞는 복구 시나리오(보상 트랙잭션)를 사용합니다.

주요개념 03
도메인 모델 기반 서비스 구조

  • 마이크로서비스 기반 시스템 레이어 및 모듈 구조
  • 기술 아키텍처와 도메인 영역을 분리하여 구성

도메인 영역의 비즈니스의 변경 없이 기술 영역만 대체하기 쉬워 빠른 기술 변화에 효과적으로 대응 할 수 있습니다.

도메인 주도 설계 (Domain Driven Design)

고객, 개발자 간 공통의 언어를 통해 동일한 시각으로 비즈니스 개념을 공유하고, 소프트웨어에도 동일하게 반영합니다. 이를 통해 소프트웨어의 복잡성을 줄일 수 있으며, 빠른 기술 변화와 무관하게 비즈니스 도메인 모델을 재사용 할 수 있습니다.

주요개념 01
유비쿼터스 언어 중심

유비쿼터스 언어 개념도

모든 커뮤니케이션은 유비쿼터스 언어(공통용어)로 설계된 모델을 활용하고, 모델은 코드에도 그대로 반영이 됩니다. 도메인 모델을 설계할 때 식별되는 핵심 개념은 적절한 용어로 표현해야 하며 언어가 변경되는 경우에는 모델에도 동일하게 반영해야 합니다.

주요개념 02
도메인 모델 기반의 설계/개발

비즈니스 개념을 정확하게 반영하는 모델과 모델을 그대로 반영하는 코드는 모델이 바뀌면 코드도 바뀌고, 코드가 바뀌면 모델도 함께 바뀝니다. 모델 설계에 참여한 모든 사람들은 코드에 대해서도 동일하게 시간을 투자해야 합니다. 코드변경에 책임이 있는 사람들은 모델을 코드에 어떻게 표현하는지 익혀야 하고, 모든 개발자 역시 모델에 대해 토의하고 의견을 교환 할 수 있어야 합니다.

주요개념 03
지속적인 모델/소스 리팩토링을 통한 점진적 설계
  • 애자일 프로세스 지원
  • 한번에 완벽한 설계 대신 빠른 모델링 후 구현 검증의 반복
  • 분석 – 설계 – 구현 표현적 차이 극복

유비쿼터스 언어를 사용하여 정의한 도메인 모델은 소프트웨어를 구현하는 과정에서 검증되고 개선될 수 있습니다. 리팩토링을 통해 설계와 코드를 지속적으로 개선함과 동시에 모델과 구현의 표현적 차이를 극복해 나갈 수 있습니다. 설계와 구현은 독립적인 활동이 아닌 유기적으로 연계된 절차로서 수행됩니다. 한번에 완벽한 설계를 목표로 하는 것 보다 빠르게 설계하고 점진적으로 개선해 나가는 것을 목표로 합니다.

자동화 도구

다양한 자동화 도구/시스템을 통해 핵심 프로세스를 자동화하여 품질/생산성을 향상시킵니다.

온라인 상담/문의
상담/문의 하기
상담 예약
상담 예약하기
전화상담
02-6400-2222

quick 메뉴