메뉴 건너뛰기

(*.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)이 발생하는데 해당 방법을 최소화 해야한다 (실시간까지는 아니겠지만!)

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

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




List of Articles
번호 제목 날짜 조회 수
76 테라폼(Terraform) - 개념, 장점, 관리툴 file 2024.10.01 246
75 Elasticsearch, Apache Lucene( 아파치 루씬 ) 기반의 Java 오... file 2024.09.22 320
74 Apache Nifi 의 구성요소, 아키텍쳐 file 2024.09.22 305
73 아파치 카프카(Apache Kafka)는 분산형 스트리밍 플랫폼 file 2024.09.22 296
72 쿠버네티스 시작하기 - Kubernetes file 2024.09.21 263
71 [NCP] VPC Peering file 2024.09.21 244
70 [AWS] VPC Peering file 2024.09.21 246
69 CIDR을 통해 알아보는 서브넷 마스크와 IP 클래스 2024.09.21 245
68 클라우드(Cloud) vs. 온프레미스(On-premise) file 2024.09.16 333
67 VPN(가상사설망) 프로토콜 비교 : SSL/L2TP/IPSec/PPTP file 2024.09.16 250
66 [Spring Cloud] 스프링 클라우드 란 무엇인가요? file 2024.08.30 238
65 {개발자}로 자라기 – 쿠버네티스, 왜 배워야 할까? file 2024.08.30 281
64 오토스케일링(Auto Scaling)이란? (AWS, 클라우드) file 2024.07.09 213
63 Docker 이해하기 -2 : 컨테이너 라이프 사이클 & CLI 이해하기 file 2024.07.08 240
62 Docker 이해하기 -1 : 기초 이론(아키텍처, 흐름, 주요 용어) file 2024.07.08 202
61 정부원격근무서비스(GVPN)를 통한 통합운영관리시스템(nTOPS, n... file 2024.06.14 470
60 국가정보자원관리원(NIRS) G클라우드 소개 file 2024.06.14 399
59 RHEV 4.0 Hypervisor 설치 방법 file 2024.06.14 249
58 클라우드에 'MSA' 적용이 필요한 이유 file 2024.05.29 306
» MSA (Micro Service Architecture)란? 2024.03.15 250
목록
Board Pagination Prev 1 2 3 4 Next
/ 4