콘웨이 전략

Mong·2024년 1월 16일
0

MSA

목록 보기
3/4
post-custom-banner

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
by 멜빈 콘웨이

참조

올바른 MSA가 되기 위해서는 아키텍쳐와 서비스 구조, 개발 패턴도 중요하지만 올바른 조직과 프로세스가 뒷받침되어야 한다.

조직

규모가 큰 팀은 여러 팀으로 나누는 것이 좋다. 나눌수록 비즈니스 관점에서 팀의 목표는 명확해진다. 콘웨이 전략대로 애플리케이션 아키텍쳐는 그것을 개발하는 조직의 구조를 그대로 반영한다는 말따라, 조직의 구조가 마이크로서비스 아키텍쳐에 고스란히 반영되도록 설계해야 한다. 쪼개진 팀은 서비스와 느슨하게 결합이 되고 독립적으로 서비스를 개발, 배포, 확장이 가능해진다.

프로세스

폭포수 모델

폭포수(Waterfall)모델 은 단계적이며 선형적인 방식으로 소프트웨어를 개발하는 방법론으로, 각 단계가 순차적으로 이루어진다. 주요 단계에는 요구사항 정의, 시스템 설계, 구현, 테스트, 유지보수 등이 포함된다. 이러한 단계는 이전 단계의 완료 후에 진행되며, 각 단계에서 발생한 문제는 다음 단계로 넘어가기 전에 해결해야 한다. 간단하고 직관적이지만, 요구사항 변경이나 수정이 발생할 경우 유연성이 부족할 수 있습니다.

애자일 모델

애자일(Agile)모델 은 소프트웨어 개발을 위한 반복적이고 유연한 방법론이다. 애자일은 초기에 계획을 엄격하게 고정하는 대신, 변경에 대응하고 고객의 피드백을 수용하는 데 중점을 둔다. 이 방법론은 민첩한 방식으로 작업하면서 변화에 대응하는 것을 강조한다. 가장 널리 알려진 애자일 개발 방법론으로는 스크럼(Scrum), 익스트림 프로그래밍(XP), 칸반(Kanban) 등이 있다.

  • 고객과의 상호작용 :
    개발자와 고객 간의 지속적인 소통과 협력을 강조합니다.

  • 작은 배포 단위 :
    작은 기능 또는 모듈을 작업하고 이를 지속적으로 배포하여 빠른 피드백을 얻습니다.

  • 반복적인 개선 :
    개발 팀은 주기적인 회고를 통해 프로세스를 개선하고 효율성을 높입니다.

  • 변화에 대한 대응 :
    요구사항이나 우선순위가 변경될 때, 빠르고 유연하게 대응합니다.

배포 프로세스

CI/CD

CI/CD는 "지속적인 통합" (Continuous Integration, CI)과 "지속적인 배포" (Continuous Deployment, CD)의 약자로, 소프트웨어 개발 및 전개 프로세스를 자동화하고 개선하기 위한 방법론을 나타낸다.

  • 지속적인 통합 (Continuous Integration, CI) :
    개발자들이 코드를 지속적으로 공유하고 통합하는 프로세스를 의미한다. 여러 명의 개발자가 동시에 작업할 때 코드 통합을 늦추지 않고 자주 통합함으로써 통합 오류를 최소화하고 품질을 유지한다. 코드 변경이 이루어질 때마다 자동으로 빌드 및 자동화된 테스트를 수행하고, 통합된 코드베이스의 상태를 지속적으로 확인합니다.

  • 지속적인 배포 (Continuous Deployment, CD) :
    코드 변경이 통합되고 테스트를 통과하면 자동으로 프로덕션 환경에 배포되는 프로세스를 의미한다. 이를 통해 새로운 기능이나 버그 수정이 빠르게 사용자에게 전달된다. CI 이후 자동으로 배포 파이프라인이 실행되며, 프로덕션 배포를 자동화하여 인프라 및 서비스를 최신 코드로 업데이트한다.

위와 같은 조직과 개발 방법론, 배포 프로세스가 모두 이루어져야만 성공적인 MSA를 실천할 수 있다.

post-custom-banner

0개의 댓글