[용어 정리] Micro Service Architecture란?

[용어 정리] Micro Service Architecture란?


Monolithic Architecture(모노로틱 아키텍처) 

  • 하나의 서버에 모든 비지니스 로직이 들어가 있는 상태
  • 하나의 중앙 집중화된 DB에 모든 데이터가 저장됨
장점 
  • 여러개의 기술을 혼용해서 사용하기 어려움(node.js, Ruby, Python etc)
  • 배포 및 재가동 시간이 오래 걸림
  • 수정이 용이하지 않음(타 컴포넌트 의존성)
단점
  • 기술 단일화 
  • 관리 용이성










Micro Service Architecture(마이크로 서비스 아키텍처)


  • 하나의 기능을 구현 하는데, 여러개의 서비스를 조합하여 기능을 제공
  • 즉, 하나의 큰 애플리케이션을 여러개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처
    • ex) 주문하기 : 사용자 정보 조회, 상품 정보 조회, 신규 주문 생성

  • 시스템을 여러개의 독립된 서비스로 나눠서, 이 서비스를 조합함으로서 기능을 제공하는 아키텍처 디자인 패턴

  • SOA의 경량화 버전(실패한다면 실패하는 이유도 같음)
    • SOA(Service Oriented Architecture) : 기존의 애플리케이션의 기능들을 비지니스적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스를 통해 서비스로  구현하고, 이 서비스들을 기업의 업무에 따라 조합하여 애플리케이션을 구성하는 소프트웨어 개발 아키텍처

  • 기술 스택
  • 마이크로 서비스 아키텍처는 서비스 별로 다른  기술 스택을 사용할 수 있음
    • 단점 
      • 운영 관점에서 여러가지 기술을 배워야 함(Devops - You build, You run)
      • 서비스 간의 통신에 대한 처리가 추가적으로 필요
      • 사람이 떠나면 보수 불가(Product not a project)
      • 은행권 같은 곳에서 SI프로젝트를 하기에는 힘들수도 있다
      • 친한팀끼리는 개발이 잘되지만... 안친하면... 교류가 없다...
      • 잘하는 팀에게 업무가  몰리게 됨 -> 서비스 컴포넌트가 균일하지 않게 됨
    • 장점 
      • 적절한 기술을 적절하게 배치 가능(빠른 개발 스크립트 언어, 튼튼한 자바..)
      • 각각의 서비스의 특성에 맞게 자원을 할당하여 스케일 아웃할 수 있기 때문에 효율적인 자원사용이 가능.
      • 서비스가 개별적으로 독립적인 단위의 애플리케이션이기 때문에 변경이 용이하고 그 변경이 다른 서비스에 미치는 영향이 적음
      • 개별 서비스 단위의 배포가 가능하기 때문에 하루에도 여러 번 배포 가능

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?