메뉴 건너뛰기

(*.168.0.1) 조회 수 250 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기
Extra Form
출처 https://blog.naver.com/yug311861/2229977...isInf=true

Monolithic Architecture 란?

소프트웨어의 모든 구성요소가 하나의 결합체를 이루고 있는 프로젝트 설계모습이 있다.

그런 설계 모습을 모놀리식 아키텍처라 부릅니다.

큰 규모의 서비스가 아니라면 모놀리식 아키텍처를 많이 사용하고 저 또한 대부분 그렇게 설계하고 작업을 많이했습니다.

​

하지만 모놀리식의 아키텍처는 분명이 존재하는데 특히나 인원이 많은 기업에서는 더욱이나 문제점이 들어납니다.

또한 지금 같이 개발자들의 각기 다른 언어 생태계를 가진 상황 그리고 프로젝트 별 부분 별 어떤 언어가 더 빠르고 더 정확한 프로그래밍을 해야하는 상황에서 문제가 들어나는 거 같아요.

​

장점

  • 소규모 프로젝트에 좋다

  • 합리적인 가격과 유지보수 용이성

단점

  • 서비스가 커지면 구조 파악의 힘듬

  • 장애 발생 시 전체 프로젝트를 체크해야하는 상황

  • 부분적 관리가 힘듬


위와 같은 부분을 해결하기 위해서 등장한 것이 바로 MSA입니다.

해결 이라고 표현을 하지만 어떠한 아키텍처 기법이 맞다 틀리다는 선택할 수 있다고 생각하지는 않습니다.

아키텍처니깐요 해당 구성은 상황에 맞게 구성하는거라고 봅니다.


MicroService Architecture 란?

각 서비스를 독립적으로 구성하고 그것을 연결하는 아키텍처라고 생각하면됩니다!

주로 각 서비스는 API방식(RestfulAPI) gRPC방식을 활용하는데 나는 이제는 시그널 버퍼 방식으로 구현하는 서비스에 새롭게 투입된 상황이라 gRPC방법으로 나아갈 것 같다.

​

즉, MSA의 등장은 대규모 서비스를 위한 보완을 위해서 등장했다고 보면된다 그러면 SOA랑은 같은거 아닌가라는 의문이 들수도 있다 그 부분은 아래에서 다시 다뤄보자!


SOA와 MSA의 차이


Serrvice Oriented Architecture란?

서비스 지향 설계 방식 입니다 MSA와 비슷하게 서비스 단위별로 나누어 개발을 하는 것 입니다.

재가용성을 목표로 개발하며 마이크로 서비스 아키텍처와 매우 흡사합니다.

SOA는 재가용성 즉 서비스를 돌려 다른 시스템에 붙이거나 하여 처리하는 방법이라고 보면될 거 같아요.

​

MSA와 SOA 차이가 뭐죠?

위에서 말한 재가용성이 차이이며 독립적인게 차이입니다.

마이크로 서비스 아키텍처는 하나의 서비스별 독립적인 역할을 담당합니다.

​

둘 다 서비스 지향 설계 방식을 기반으로 하지만 MSA는 SOA와 달리 각 서비스가 독립적으로 구성된다.

그래서 해당 서비스들을 RestfulAPI, gRPC와 같은 것으로 통신하여 결과를 받아오며 각 서비스가 결합없이 독립적으로 개발을 해도 무관하다!

​

이렇게 까지보면 여태 내가 했던 프로젝트로 각 나눠져있는 서비스를 구현해서 API를 만들어 제공하는 방식이니

MSA방식으로 제작하는 케이스들도 종종 있었던 거 같다!


MicroService Archiecture

MSA의 특징

  • 각 서비스 하나하나가 독립적인 하나의 Monolithic Architecture

  • 각 서비스는 특정 개발언어가 정해진게 아닌 각각의 독립적인 존재

  • 각 서비스는 다른 서비스에 의존하지 않아야한다.

  • 통신을 이용한 소통 RPC/ REST

​

MSA 장점

  • 개별 배포가 가능하다 ( 각 서비스별 배포이기에 실제 서비스 중단이 필요없다 )

    • 배포가 용이하다

  • 언어에 구애 없이 개별 구성을하고 연결을하면 된다.

    • 확장성이 용이하다

  • 서비스별 장애는 전체 서비스에 영향을 적게준다

    • 장애 이슈 가능성이 적다

​

MSA 단점

  • 설계가 어렵다

  • 서비스 통신을 위한 비용이 발생한다 API / gRPC 어떠한 방식이든 필수

  • 지연시간(latency)이 발생하는데 해당 방법을 최소화 해야한다 (실시간까지는 아니겠지만!)

  • 통합 테스트가 불가능하다 (최종 통합테스틑 각 툴을 추가하여 설계야한다!)

  • 데이터 관리에 대한 설계가 필요하다




  1. 테라폼(Terraform) - 개념, 장점, 관리툴

  2. Elasticsearch, Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진

  3. Apache Nifi 의 구성요소, 아키텍쳐

  4. 아파치 카프카(Apache Kafka)는 분산형 스트리밍 플랫폼

  5. 쿠버네티스 시작하기 - Kubernetes

  6. [NCP] VPC Peering

  7. [AWS] VPC Peering

  8. No Image 21Sep
    by
    2024/09/21 Views 245 

    CIDR을 통해 알아보는 서브넷 마스크와 IP 클래스

  9. 클라우드(Cloud) vs. 온프레미스(On-premise)

  10. VPN(가상사설망) 프로토콜 비교 : SSL/L2TP/IPSec/PPTP

  11. [Spring Cloud] 스프링 클라우드 란 무엇인가요?

  12. {개발자}로 자라기 – 쿠버네티스, 왜 배워야 할까?

  13. 오토스케일링(Auto Scaling)이란? (AWS, 클라우드)

  14. Docker 이해하기 -2 : 컨테이너 라이프 사이클 & CLI 이해하기

  15. Docker 이해하기 -1 : 기초 이론(아키텍처, 흐름, 주요 용어)

  16. 정부원격근무서비스(GVPN)를 통한 통합운영관리시스템(nTOPS, national Total Operation Platform System) 접속

  17. 국가정보자원관리원(NIRS) G클라우드 소개

  18. RHEV 4.0 Hypervisor 설치 방법

  19. 클라우드에 'MSA' 적용이 필요한 이유

  20. No Image 15Mar
    by 정보제공
    2024/03/15 Views 250 

    MSA (Micro Service Architecture)란?

목록
Board Pagination Prev 1 2 3 4 Next
/ 4