폭포수 개발 방법론, 마이크로 아키텍처 특징, 클라우드 서비스 특징

철근콘크리트·2020년 12월 27일
0

폭포수 개발 방법론의 단점

  • 강한 결합 : 컴포넌트를 조금만 수정해도 그 애플리케이션의 다른 부분을 깨뜨리거나 새로운 거브를 생산할 가능성이 매우 높다..

  • 누설 : 대규모 소프트웨어 애플리케이션의 대부분은 다양한 유형의 데이터를 취급한다. 예를 들어 고객 관계 관리(CRM) 애플리케이션은 고객, 판매, 제품 정보를 관리한다. 여기서 다른 영역의 데이터에 쉽게 접근하게 되면 보이지 않는 의존성이 생겨나고 컴포넌트의 내부 데이터 구조에 대한 세부 구현이 애플리케이션 전체에 유출될 수 있다.

  • 모놀리식 : 전통적인 애플리케이션에서 대부분의 컴포넌트는 여러 팀에서 공유되는 단일 코드 베이스에 저장하므로 코드를 변경할 때마다 전체 테스팅 주기를 재수행하며 재배포한다. 애플리케이션 코드 베이스를 조금만 변경해도 비용이 많이 들며 오랜시간이 소요된다.




마이크로서비스 기반 아키텍처 특징

  • 제한 : 마이크로서비스는 책임집합을 가지는 범위가 좁다. 마이크로 서비스는 애플리케이션이 한 가지 일을 하며, 정말 잘하는 서비스 집합에 불과하다는 유닉스 철학을 수용한다.

  • 느슨한 결합 : HTTP와 REST처럼 비독점적 호출 프로토콜을 사용하는 구현 기술에 중립적인 인터페이스로 서로 소통한다.
    (서비스에 대한 인터페이스가 변하지 않는 한 마이크로서비스 소유자는 전통적인 애플리케이션 아키텍처보다서비스를 더 자유롭게 수정할 수 있다.)

  • 추상화 : 마이크로서비스의 데이터를 보관하는 데이터베이스에서 해당 서비스만 접근할 수 있도록 통제할 수 있다.

  • 독립적 : 마이크로서비스 애플리케이션 안의 모든 마이크로서비스는 서로 독립적으로 컴파일하고 배포할 수 있다.
    (상호 의존성이 높은 모놀리식 애플리케이션보다 변경 사항을 훨씬 쉽게 분리하고 테스트할 수 있다는 것을 의미한다.)




클라우드 기반 애플리케이션 특징.

  • 사용자층이 다양하며 대규모다 : 고객마다 서로 다른 제품 기능을 원하며, 이 기능을 접하기까지 애플리케이션의 긴 릴리스 주기를 기다리고 싶어 하지 않는다. 마이크로서비스는 작은 범위를 담당하고, 명확히 정의된 인터페이스를 통해 접근하므로 기능을 신속하게 제공할 수 있다.

  • 상당한 작동 시간이 요구된다 : 마이크로서비스 자체의 분산적 특성 때문에 마이크로서비스 기반 애플리케이션은 애플리케이션 전체를 중단하지 않고도 고장과 문제를 더 쉽게 격리할 수 있다. 이로 인해 전반적인 애플리케이션 작동 중지 시간은 줄어들고 결함 저항력은 높아진다.

  • 볼륨이 균일하지 않다 : 기업 데이터센터에서 운용되는 전통적인 애플리케이션은 대개 일정한 사용 패턴을 가지므로, 애플리케이션의 용량 계획은 간단하다. 하지만 클라우드 기반 애플리케이션 환경에서는 포스팅 하나가 엄청한 수요를 불러올 수 있다.
    (마이크로 서비스는 독립적인 배포가 가능한 작은 컴포넌트로 분리되어 있기 때문에 부하를 받는 컴포넌트를 조명하고 여러 서버에 수평 확장하기도 훨씬 쉽다.




성공적인 마이크로서비스 개발 토대는 다음 중요한 세 역할의 관점에서 시작한다.

  • 아키텍트 : 아키텍트의 역할은 솔루션을 제공하기 위해 큰 그림을 바라보고 애플리케이션을 개별 마이크로서비스로 분해하는 방법과 마이크로서비스의 상호 작용 방법을 이해하는 것이다.

  • 소프트웨어 개발자: 코드를 작성하고 마이크로서비스를 제공하기 위해 프로그래밍 언어와 해당 언어용 개발 프레임워크의 사용 방법을 자세히 이해해야 한다.

  • 데브옵스 엔지니어 : 데브옵스 엔지니어는 운영 환경 및 비 운영 환경에서 서비스 배포와 관리 방법 정보를 제공한다. 데브옵스 엔지니어의 좌우명은 모든 환경에서의 일관성과 반복성이다.

0개의 댓글