굥뷰를 햡시댜

[용어 정리] Waterfall, Agile, MSA에 대하여.. 본문

웹/용어 정리

[용어 정리] Waterfall, Agile, MSA에 대하여..

GodZ 2019. 10. 29. 11:26

Devops, MSA, Agile...

 

IT 분야에 관심이 많다면 누구나 한 번쯤 들어봤을 단어들 입니다.

 

이런 용어들을 명확하게 한 줄로 정의해놓은 곳이 없어 제가 이해한 것을 바탕으로 정리해보겠습니다.

 

1. Waterfall 방식과 Agile 방식

- 워터폴(Waterfall) 방식이란?

워터폴 방식은 요구분석 -> 설계 -> 디자인 -> 코딩 -> 개발 순으로 순차적으로 이어지는 개발 방식입니다.

 

이런 개발 방식은 단계별로 정형화된 접근 방식을 사용하는 이유로 기술적인 위험 요소가 적다는 장점을 가지고 있습니다.

 

하지만 이런 개발 방식은 고객과의 커뮤니케이션 면에서 즉각적으로 피드백이 이뤄지지 않기 때문에 처음 고객이 의도했던 바와 다른 제품이 개발될 수도 있다는 단점이 있습니다.

 

방금 언급한것 처럼, 워터폴 방식은 완벽히 구현되어 시각적으로 확인하거나 개발을 통해 애플리케이션이 실제로 작동하는 모습을 보기 전까지 고객은 자신들이 요구했던 사항들을 확인하기가 어렵습니다.

 

그래서 실제로 시각적으로 확인하고 나서야 고객측의 수정 요청이 발생하기 시작합니다.

 

이 방식의 문제점은 이미 개발 단계를 지나온 상태에서 다시 되돌아가 기획단계부터 수정되기 시작하면 이미 지불된 일정이나 비용 등 여러가지 문제점이 발생할 수 있습니다.

 

이런 문제점을 해결할 수 있는 것이 애자일(Agile) 방식 입니다.

 

-애자일(Agile) 방식이란?

애자일 방식은 기존의 워터폴 방식(전체적인 계획을 세우고 개발하는 방식)과 달리 일정한 주기를 가지고 끊임없이 시제품을 만들고 필요할 때마다 요구사항을 더하고 수정하여 애플리케이션을 개발하는 방식입니다.

 

시제품을 통해 실제로 애플리케이션이 작동되는 모습을 확인하고 수정요청을 하거나 다음 단계로 넘어가기 때문에 시간, 비용적인 측면에서 워터폴 방식보다 큰 효율을 가지고 있다는 장점이 있습니다.

 

2. MSA(MicroService Architecture)

MSA란 서비스를 독립적으로 작은 단위로 나누고 이를 조합하여 메인 애플리케이션을 구성하는 아키텍처 패턴입니다.

 

- MSA의 특징

  • 애플리케이션 로직을 작은 컴포넌트들로 분해하고 이를 조합해서 솔루션을 제공합니다.
  • 이렇게 작은 컴포넌트들로 나눠진 서비스들은 다른 애플리케이션에서도 재사용될 수 있어야 합니다.
  • 서비스 소비자워 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON 같은 통신 프로토콜을 사용합니다.
  • 작고 독립적이며 분산된 마이크로서비스를 사용해 조직은 명확히 정의된 책임 영역을 담당하는 소규모 팀을 보유할 수 있습니다. 이 팀들은 하나의 목표를 향해 일하지만, 자기가 개발하는 서비스만 책임집니다.

 

- MSA 장점

  • 대용량 분산 환경에 적합하다.
  • 복잡도가 감소한다.
  • 코드의 재사용성이 높다.(확장성 有)

- MSA 단점

  • 장애추적, 모니터링이 어렵다.
  • 여러 서비스에 걸쳐져 있는 feature의 경우 트랜잭션을 다루기 어렵다.
  • 여러 서비스에 걸쳐져 있는 feature의 경우 테스팅이 복잡하다.
  • 서비스 간 dependency가 있는 경우 릴리즈가 까다롭다.

 

Comments