마이크로 서비스 아키텍처 | [Talk\U0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(Msa) #1편 인기 답변 업데이트

당신은 주제를 찾고 있습니까 “마이크로 서비스 아키텍처 – [Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편“? 다음 카테고리의 웹사이트 ppa.diaochoangduong.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.diaochoangduong.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 NAVER Cloud Platform : 네이버 클라우드 플랫폼 이(가) 작성한 기사에는 조회수 5,290회 및 좋아요 110개 개의 좋아요가 있습니다.

Table of Contents

마이크로 서비스 아키텍처 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편 – 마이크로 서비스 아키텍처 주제에 대한 세부정보를 참조하세요

#클라우드 #마이크로서비스아키텍처 #MSA
지난 수년간 전 세계 주요 기업의 70% 이상이 비용 절감 및 사업 효율화를 위해 클라우드를 도입했습니다. 하지만 단순 도입만으로는 클라우드를 제대로 활용할 수 없죠.
이번 웨비나에서는 클라우드를 잘 활용하기 위한 Cloud Native 디자인 패턴인 마이크로서비스 아키텍처에 대해 알아보겠습니다.
마이크로서비스 아키텍처(MSA)의 등장 배경과 구조적 특징에 대해 살펴보며, 서비스 경량화를 위한 기초적인 지식을 얻어 가시길 바랍니다.
🌥 네이버 클라우드 플랫폼 더 알아보기
https://www.ncloud.com
📚 네이버 클라우드 플랫폼 교육 포털
https://edu.ncloud.com 에서 무료 온라인 교육, 정기 교육 일정, 기술 자격증 정보를 확인해 보세요.
#NAVERCLOUD #네이버클라우드

마이크로 서비스 아키텍처 주제에 대한 자세한 내용은 여기를 참조하세요.

마이크로서비스 아키텍처(Microservices Architecture)의 장점과 …

마이크로 서비스는 웹 기반의 복잡한 응용 프로그램을 설계하기 위한 또 다른 아키텍처입니다. 일반적으로 SOA(Service Oriented Architecture)와 비슷하게 바라보는 …

+ 여기에 표시

Source: giljae.medium.com

Date Published: 3/28/2021

View: 8050

마이크로서비스란 무엇입니까? – AWS

마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 …

+ 더 읽기

Source: aws.amazon.com

Date Published: 11/15/2021

View: 5043

마이크로서비스 아키텍처란? – Google Cloud

마이크로서비스 아키텍처(주로 마이크로서비스라고도 함)란 애플리케이션 개발을 위한 아키텍처 스타일을 의미합니다. 마이크로서비스를 사용하면 대규모 애플리케이션 …

+ 자세한 내용은 여기를 클릭하십시오

Source: cloud.google.com

Date Published: 10/9/2021

View: 5877

마이크로 서비스 아키텍처 스타일 – Azure Architecture Center

마이크로 서비스란? · 마이크로 서비스는 작고, 독립적이며, 느슨하게 결합되어 있습니다. · 각 서비스는 작은 개발 팀이 관리할 수 있는 개별 코드베이스입니다. · 서비스를 …

+ 여기에 자세히 보기

Source: learn.microsoft.com

Date Published: 2/17/2022

View: 8546

Do Not Use MSA – 마이크로서비스 아키텍처가 꼭 필요한가요?

마이크로서비스는 위의 서비스들을 더 잘게 나누기 위해 특정 도메인 바운더리, 즉 영역을 정의하고 해당 영역 안에서 필수불가결한 비즈니스 로직을 처리 …

+ 여기에 더 보기

Source: www.samsungsds.com

Date Published: 8/16/2022

View: 7105

마이크로서비스 개념, 장점, 아키텍처, 적용 사례 – Red Hat

마이크로서비스란 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할합니다. 모든 …

+ 여기에 자세히 보기

Source: www.redhat.com

Date Published: 7/20/2022

View: 611

마이크로서비스 아키텍처. 그것이 뭣이 중헌디? – Guruble

마이크로서비스 아키텍처 패턴은 그 이름에서도 유추할 수 있듯이 모놀리틱 아키텍처로 구성된 하나의 큰 서비스를 독립적인 역할을 수행하는 작은 단위의 …

+ 더 읽기

Source: guruble.com

Date Published: 4/15/2021

View: 8466

클라우드 플랫폼과 마이크로서비스 – 가비아 라이브러리

마이크로서비스 아키텍처란? 마이크로서비스 아키텍처((Microservice Architecture)는 하나의 큰 애플리케이션을 여러 개의 작은 서비스 유닛으로 쪼개어 변경과 조합 …

+ 여기에 표시

Source: library.gabia.com

Date Published: 11/14/2021

View: 3312

마이크로서비스 아키텍처(MSA) 개념 소개 – CLIPSOFT

MSA란 마이크로 서비스 아키텍처(Micro Service Architecture)의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법입니다. leh_4. < ...

+ 여기에 자세히 보기

Source: clipsoft.co.kr

Date Published: 5/26/2022

View: 9706

마이크로 서비스 아키텍처란 무엇입니까? – TIBCO Software

마이크로서비스 아키텍처 는 애플리케이션을 특정 비즈니스 기능을 구현하는 개별 서비스로 분해하여 현대 개발자에게 확장성이 뛰어나고 유연한 애플리케이션을 설계 …

+ 여기에 자세히 보기

Source: www.tibco.com

Date Published: 3/27/2021

View: 3784

주제와 관련된 이미지 마이크로 서비스 아키텍처

주제와 관련된 더 많은 사진을 참조하십시오 [Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편
[Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편

주제에 대한 기사 평가 마이크로 서비스 아키텍처

  • Author: NAVER Cloud Platform : 네이버 클라우드 플랫폼
  • Views: 조회수 5,290회
  • Likes: 좋아요 110개
  • Date Published: 2022. 1. 26.
  • Video Url link: https://www.youtube.com/watch?v=8d4h7K_Fq-0

마이크로서비스란 무엇입니까?

모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해집니다. 그리고 이러한 복잡성으로 인해 실험에 제한을 받고 새로운 아이디어를 구현하기가 어려워집니다. 종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킵니다.

마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행됩니다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신합니다. 서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행합니다. 서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있습니다.

마이크로서비스 아키텍처란?

마이크로서비스 아키텍처(주로 마이크로서비스라고도 함)란 애플리케이션 개발을 위한 아키텍처 스타일을 의미합니다. 마이크로서비스를 사용하면 대규모 애플리케이션을 각각 담당 영역을 가진 소규모의 독립적인 구성요소로 구분할 수 있습니다. 마이크로서비스 기반 애플리케이션은 단일 사용자 요청을 처리하기 위해 여러 내부 마이크로서비스를 호출하여 응답을 작성할 수 있습니다.

컨테이너는 종속 항목에 대한 걱정 없이 서비스를 개발하는 데 집중할 수 있는 잘 설계된 마이크로서비스 아키텍처 예시입니다. 최신 클라우드 기반 애플리케이션은 일반적으로 컨테이너를 사용하여 마이크로서비스로 빌드됩니다.

Google Kubernetes Engine이 컨테이너를 사용하여 마이크로서비스 기반 애플리케이션을 만드는 데 어떻게 도움이 되는지 알아보세요.

시작할 준비가 되셨나요? 신규 고객에게는 Google Cloud에 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

마이크로 서비스 아키텍처 스타일 – Azure Architecture Center

마이크로 서비스 아키텍처 스타일

마이크로 서비스 아키텍처는 작은 자율 서비스 컬렉션으로 구성됩니다. 각 서비스는 독립적이며 제한된 컨텍스트 내에서 단일 비즈니스 기능을 구현해야 합니다. 제한된 컨텍스트는 비즈니스 내의 자연스러운 분할이며 도메인 모델이 존재하는 명시적 경계를 제공합니다.

마이크로 서비스란?

마이크로 서비스는 작고, 독립적이며, 느슨하게 결합되어 있습니다. 하나의 소규모 개발자 팀이 작성하고 유지 관리할 수 있습니다.

각 서비스는 작은 개발 팀이 관리할 수 있는 개별 코드베이스입니다.

서비스를 독립적으로 배포할 수 있습니다. 팀이 전체 애플리케이션을 다시 빌드한 후 재배치하지 않고도 기존 서비스를 업데이트할 수 있습니다.

서비스가 해당 데이터 또는 외부 상태를 유지해야 합니다. 이는 별도의 데이터 레이어가 데이터 지속성을 처리하는 기존 모델과의 차이점입니다.

서비스가 잘 정의된 API를 사용하여 서로 통신합니다. 각 서비스의 내부 구현 세부 정보는 다른 서비스에서 숨겨집니다.

다중저장소 프로그래밍을 지원합니다. 예를 들어 서비스가 동일한 기술 스택, 라이브러리 또는 프레임워크를 공유할 필요가 없습니다.

서비스 자체 외에도 다음과 같은 몇 가지 다른 구성 요소가 기존 마이크로 서비스 아키텍처에 나타납니다.

관리/오케스트레이션. 이 구성 요소는 노드에 서비스 배치, 실패 식별, 노드 간에 서비스 부하 조정 등의 작업을 담당합니다. 일반적으로 이 구성 요소는 사용자 지정 빌드가 아니라 Kubernetes와 같은 기성 기술입니다.

API 게이트웨이. API 게이트웨이는 클라이언트의 진입점입니다. 클라이언트는 서비스를 직접 호출하는 대신, 호출을 백 엔드의 적절한 서비스에 전달하는 API 게이트웨이를 호출합니다.

API 게이트웨이를 사용할 경우의 장점은 다음과 같습니다.

클라이언트와 서비스가 분리됩니다. 모든 클라이언트를 업데이트하지 않고도 서비스 버전을 관리하거나 서비스를 리팩터링할 수 있습니다.

서비스가 웹 우호적이 아닌 AMQP 등의 메시징 프로토콜을 사용할 수 있습니다.

API 게이트웨이는 인증, 로깅, SSL 종료, 부하 분산 등의 다른 교차 기능을 수행할 수 있습니다.

제한, 캐싱, 변환 또는 유효성 검사와 같은 즉시 사용 가능한 정책.

이점

민첩성. 마이크로 서비스는 독립적으로 배포되기 때문에 버그 수정 및 기능 릴리스를 관리하기가 더 쉽습니다. 전체 애플리케이션을 다시 배포하지 않고 서비스를 업데이트할 수 있고, 문제가 발생하면 업데이트를 롤백할 수 있습니다. 기존의 많은 애플리케이션의 경우, 버그가 애플리케이션의 한 부분에서 발견되면 전체 릴리스 프로세스를 차단할 수 있습니다. 버그 수정이 통합, 테스트 및 게시될 때까지 새로운 기능은 보류될 수 있습니다.

집중화된 소규모 팀 . 마이크로 서비스는 규모가 작아서 한 기능 팀에서 충분히 구축, 테스트 및 배포할 수 있습니다. 소규모 팀은 민첩성이 높습니다. 대규모 팀은 커뮤니케이션의 속도가 느리고, 관리 오버헤드가 증가하며, 민첩성이 감소되기 때문에 생산성이 떨어지는 경향이 있습니다.

소규모 코드 기준 . 모놀리식 애플리케이션의 경우 시간이 경과하면서 코드 종속성이 얽히는 경향이 있습니다. 새 기능을 추가하려면 여러 지점의 코드를 손봐야 합니다. 마이크로 서비스 아키텍처는 코드나 데이터 저장소를 공유하지 않으므로 종속성이 최소화되며 그 결과 새로운 기능을 추가하기 쉽습니다.

기술의 혼합 . 팀은 혼합된 기술 스택을 적절히 사용하여 서비스에 가장 적합한 기술을 선택할 수 있습니다.

결함 격리 . 개별 마이크로 서비스를 사용할 수 없게 되면 업스트림 마이크로 서비스가 오류를 올바르게 처리하도록 설계된 경우(예: 회로 중단을 구현하여) 전체 애플리케이션이 중단되지 않습니다.

확장성 . 서비스는 별도로 확장될 수 있어 전체 애플리케이션 규모를 확장하지 않고도 리소스가 더 많이 필요한 하위 시스템의 규모를 확장할 수 있습니다. Kubernetes 또는 Service Fabric 등의 오케스트레이터를 사용하면 단일 호스트에 서비스를 보다 높은 밀도로 패킹할 수 있기 때문에 리소스를 보다 효율적으로 활용할 수 있습니다.

데이터 격리. 단일 마이크로 서비스만 영향을 받기 때문에 스키마 업데이트를 수행하는 것이 훨씬 쉽습니다. 모놀리식 애플리케이션에서는 스키마 업데이트가 매우 어려울 수 있습니다. 애플리케이션의 다양한 부분이 모두 동일한 데이터에 영향을 미칠 수 있어서 스키마를 변경하는 것이 위험하기 때문입니다.

과제

마이크로 서비스의 이점은 무료로 제공되지 않습니다. 마이크로 서비스 아키텍처를 시작하기 전에 고려해야 할 몇 가지 과제가 있습니다.

복잡성 . 마이크로 서비스 애플리케이션에는 동등한 모놀리식 애플리케이션보다 작동 부분이 더 많습니다. 각 서비스는 더 단순하지만 전체 시스템이 더 복잡합니다.

개발 및 테스트 . 다른 종속 서비스에 의존하는 소규모 서비스를 작성하려면 기존의 모놀리식 또는 계층화된 애플리케이션을 작성하는 것과 다른 접근 방식이 필요합니다. 기존 도구는 항상 서비스 종속성 작업에 맞게 설계되지 않습니다. 서비스 경계를 벗어난 리팩터링은 어려울 수 있습니다. 특히 애플리케이션이 빠르게 발전하는 경우 서비스 종속성을 테스트하기도 어렵습니다.

통제 부족 . 마이크로 서비스 빌드에 대한 분산 접근 방법에는 장점이 있지만 문제가 발생할 수도 있습니다. 언어와 프레임워크가 너무 많아서 애플리케이션 유지 관리가 어려워질 수 있습니다. 팀의 유연성을 지나치게 제한하지 않고 몇 가지 프로젝트 전체 표준을 적용하는 것이 유용할 수 있습니다. 특히 로깅과 같은 교차 기능에 해당합니다.

네트워크 정체 및 대기 시간 . 다수의 작고 세분화된 서비스를 사용하면 서비스 간 통신이 증가할 수 있습니다. 또한 서비스 종속성 체인이 너무 길어질 경우(서비스 A가 B를 호출하고, B가 C를 호출하고…) 추가 대기 시간이 문제가 될 수 있습니다. API를 신중하게 디자인해야 합니다. 통신량이 과도한 API를 피하고, 직렬화 형식을 고려하고, 큐 기반 부하 평준화와 같은 비동기 통신 패턴을 사용할 영역을 찾아보세요.

데이터 무결성 . 각 마이크로 서비스가 자체 데이터 지속성을 담당합니다. 그 결과, 데이터 일관성이 과제가 될 수 있습니다. 가능한 경우 결과적 일관성을 수용합니다.

관리 . 마이크로 서비스에 성공하려면 성숙한 DevOps 문화가 필요합니다. 전체 서비스의 상관관계 로깅이 까다로울 수 있습니다. 일반적으로 로깅은 단일 사용자 작업에 대한 여러 서비스 호출을 상호 연결해야 합니다.

버전 관리 . 서비스 업데이트로 인해 종속된 서비스가 손상되지 않아야 합니다. 언제든지 여러 서비스가 업데이트될 수 있으므로 신중하게 디자인하지 않으면 이전 버전 또는 이후 버전과의 호환성 문제가 발생할 수 있습니다.

기술 수준. 마이크로 서비스는 고도로 분산된 시스템입니다. 팀이 성공을 위한 기술과 경험을 가지고 있는지 신중하게 평가합니다.

모범 사례

비즈니스 도메인을 중심으로 서비스를 모델링합니다.

모든 것을 분산합니다. 개별 팀이 서비스 디자인 및 빌드를 담당합니다. 코드 또는 데이터 스키마를 공유하지 않도록 합니다.

데이터 스토리지가 데이터를 소유하는 서비스의 프라이빗용이어야 합니다. 각 서비스 및 데이터 형식에 가장 적합한 스토리지를 사용합니다.

서비스가 잘 디자인된 API를 통해 통신합니다. 구현 세부 정보가 누출되지 않도록 합니다. API는 서비스의 내부 구현이 아니라 도메인을 모델링해야 합니다.

서비스 간의 결합을 피합니다. 결합의 원인에는 공유 데이터베이스 스키마, 엄격한 통신 프로토콜 등이 포함됩니다.

인증, SSL 종료 등의 교차 문제를 게이트웨이에 오프로드합니다.

도메인 정보를 게이트웨이에서 숨깁니다. 게이트웨이는 비즈니스 규칙 또는 도메인 논리를 몰라도 클라이언트 요청을 처리하고 라우트해야 합니다. 그러지 않으면 게이트웨이가 종속성이 되며 서비스 간에 결합이 발생할 수 있습니다.

서비스에 느슨한 결합 및 높은 기능 응집력이 있어야 합니다. 함께 변경될 가능성이 큰 기능은 함께 패키지하고 배포해야 합니다. 개별 서비스에 상주할 경우, 한 서비스가 변경되면 다른 서비스를 업데이트해야 하므로 해당 서비스가 긴밀하게 결합됩니다. 두 서비스 간의 과도한 통신량은 긴밀한 결합과 낮은 응집력의 증상일 수 있습니다.

실패를 격리합니다. 복원 전략을 사용하여 한 서비스 내의 실패가 계단식으로 연속되지 않도록 합니다. 복원력 패턴 및 신뢰할 수 있는 애플리케이션 디자인을 참조하세요.

다음 단계

Azure에서 마이크로 서비스 아키텍처를 빌드하는 방법에 대한 자세한 지침은 Azure에서 마이크로 서비스 설계, 구축 및 운영을 참조하세요.

Do Not Use MSA – 마이크로서비스 아키텍처가 꼭 필요한가요?

클라우드

박경원

1. 마이크로서비스 아키텍처 도입을 고민 중인 당신에게

IT 업계에서 마이크로서비스 아키텍처(Microservices Architecture, MSA)가 대세로 떠오르면서 엔터프라이즈 서비스 개발 프로젝트에 활발하게 채택되고 있습니다. 애플리케이션을 보다 빠르게 개발하고 성능을 지속적으로 높여 나갈 수 있다는 이유로 마이크로서비스 아키텍처가 각광받고 있는 것입니다. 시장조사업체 가트너의 아키텍처 트렌드를 살펴보면 마이크로서비스 아키텍처는 이미 성숙기에 접어들었음을 알 수 있습니다.

하지만 필자는 고객의 요구사항 대비 가용자원을 고려하여 적합한 아키텍처를 채용하는 것이 바람직하다고 생각합니다. 모든 엔터프라이즈 IT에 마이크로서비스 아키텍처를 적용하는 것은 오버 아키텍처링 또는 불필요할 수 있다고 생각하기에 이 글을 집필하게 되었습니다. 현재 기업과 IT업계 관계자들로부터 찬사를 받고 있는 마이크로서비스 아키텍처의 단점과 도입 시 고려사항을 중심으로 살펴보겠습니다.

마이크로서비스 아키텍처를 언급할 때 모놀리식(Monolithic) 아키텍처와 비교를 많이 합니다. 이는 마이크로서비스 아키텍처를 돋보이게 하기 위한 방법으로 보이며 실제 둘 사이에는 여러 아키텍처들이 존재하고 있습니다. 또한 새로운 시스템을 설계할 때 모놀리식과 마이크로서비스, 둘 중 하나만을 선택하는 것도 일반적이지 않습니다. 의구심이 든다면 마이크로서비스 아키텍처가 등장한 2010년대 이전에 구축된 시스템들이 과연 모두 모놀리식을 채택했는지를 확인해 보면 될 것입니다.

[그림 1] 모놀리식 vs. SOA vs. MSA 서비스 분리 비교1

위의 [그림 1]을 살펴보면, 모놀리식 아키텍처 대비 서비스지향 아키텍처(Service Oriented Architecture, SOA)는 하나의 구성으로 동작하던 서비스를 단순히 몇 개의 서비스로 나눈 것이고, 마이크로서비스 아키텍처는 더 많은 서비스로 나눈 것으로 보여집니다. 마이크로서비스가 지향하는 바가 말 그대로 일련의 서비스를 더욱 잘게 나누는 분리화라고 생각한다면 이는 절반의 이해라 할 수 있습니다.

모놀리식 아키텍처가 UI, 비즈니스 로직 컴포넌트, 데이터관리 컴포넌트, 데이터들이 하나의 공간에서 밀접하게 연결되어 있다면 서비스지향 아키텍처는 공통 또는 특정 결과를 처리하기 위해 비즈니스로직 컴포넌트와 데이터관리 컴포넌트를 하나의 단일 서비스화하여 반복적인 비즈니스 동작들을 논리적이며 독립적인 형태로 구분지어 분리해 놓은 것으로 보면 됩니다. 마이크로서비스는 위의 서비스들을 더 잘게 나누기 위해 특정 도메인 바운더리, 즉 영역을 정의하고 해당 영역 안에서 필수불가결한 비즈니스 로직을 처리할 수 있도록 더 작은 단위로 서비스화합니다. 서비스지향 아키텍처에서 동일한 역할, 즉 중복된 비즈니스 로직을 제거하고 단일화했던 부분들이 다시 해당 서비스로 중복되어 재사용될 수 있으며 서비스를 나누는 기준이 하나의 도메인 영역을 중심으로 재편되는 것을 알 수 있습니다.

[그림 2] 모놀리식 vs SOA vs MSA 서비스 분리 비교2

위의 [그림 2]는 모놀리식 아키텍처에서 서비스지향 아키텍처로, 또는 서비스지향 아키텍처에서 마이크로서비스 아키텍처로 서비스를 정의하고 나누는 기준이 단편적으로 [그림 1]과는 다름을 보여 주고 있습니다. 이는 데이터를 바라보는 시각의 변화에 따른 당연한 수순처럼 보일 수 있습니다.

기존에 기업에서 관리하던 자원들과는 달리, 소비자들이 생산, 수정, 재생산 과정을 거쳐 쏟아내는 데이터는 정형화되기 힘든 비논리적인 데이터 집합이 되었습니다. 이를 관계형 데이터베이스로 관리하다 보니 한계에 직면하게 되었고 그 대안으로 2000년 초반부터 NoSQL이 도입되기 시작했습니다. 서비스지향 아키텍처가 만연해 있는 현시점에는 도메인의 성격과 크기, 목적에 따라 관계형 데이타베이스와 NoSQL을 채택하고 있습니다. 또한 관리해야 할 데이터 볼륨이 예측 불가능한 크기로 커질수록 MPP(Massively Parallel Processing) 데이터베이스, 일종의 데이터 웨어하우스 아키텍처로 확장되고 있습니다. 다만, 현재 기업들이 추진 중인 엔터프라이즈 서비스가 데이터 웨어하우스를 도입해야 하는지에 대해서는 고민해 볼 필요가 있습니다.

2. 마이크로서비스 아키텍처로 가는 길

[표 1]은 마이크로서비스 아키텍처의 구현 단계를 정의하고 있습니다.

마이크로서비스 아키텍처의 구현 단계 Level0

Traditional Level1

Basic Level2

Intermediate Level3

Advanced Application Monolithic Service Oriented

Integrations Service Oriented

Applications API Centric Database One Size Fit All

Enterprise DB Enterprise DB + No

SQLs and Light

databases Polyglot,DBaaS Matured Data Lake

/Near Realtime

Analytics Infrastructure Physical Machines Virtualization Cloud Containers Monitoring Infrastructure App & Infra

Monitoring APMs APM & Central Log Management Process Waterfall Agile and CI CI & CD DevOps [표 1] A Microservices Maturity Model, from “Spring 5.0 Microservices,” 2nd Edition”by Rajesh R V (O’Reilly)

위 표를 보면, 몇 가지 의문사항이 들 수 있는데, Level 0 Traditional에서 인프라만 컨테이너향으로 변환한다면, 또는 개발 프로세스만 데브옵스(DevOps)로 간다면 모놀리식 아키텍처와 마이크로서비스 아키텍처 중 어느 것에 가깝다고 할 수 있을까요? 또는 Level 1, Level 2에서도 위와 같이 적용한다면 서비스지향 아키텍처와 마이크로서비스 아키텍처 중 무엇으로 부르는 게 맞을까요?

이러한 질문을 던지는 것은 끊임없이 발전 중인 IT서비스 트렌드를 역행하고자 하는 것은 아닙니다. 단지 현재 운영 중인 서비스를 개선하거나 새로운 서비스를 기획할 때, 기존 레거시시스템 및 데이터 연계, 현재 시점의 요구사항 그리고 예측 가능범위 내의 미래 변화까지 대응할 수 있도록 아키텍처를 비롯한 프로세스, 인프라, IT 환경에 대한 보다 폭넓고 수준높은 이해가 필요함을 시사하기 위해서입니다.

이어서 마이크로서비스 아키텍처를 도입할 경우 필수불가결하게 따라오는 쿠버네티스(Kubenetes)와 데브옵스에 대해서 논해 보겠습니다. 쿠버네티스는 2014년 구글에서 Go라는 언어로 개발하였으며 컨테이너화된 애플리케이션을 편리하게 배포 가능하고 오토스케일링, 스케줄링, 서비스 디스커버리, 로드밸런싱, 리소스 관리 등을 지원하는 컨테이너 오케스트레이션 플랫폼입니다. 기존의 베어메탈, 가상머신에서 애플리케이션을 배포하는 것과는 여러 면에서 차이점이 있는데 컨테이너향에서 가지는 장점은 분명하게 존재합니다. 간략히 비교해 보면 [표 2]와 같습니다.

가상머신과 컨테이너 비교 구분 가상머신 컨테이너 Weight 중량화 경량화 Performance 설치된 머신에 못 미치는 성능 설치된 머신과 동일한 성능 OS 각각의 OS 위에 동작 가능 단일 호스트 OS 위에서만 동작 Virtualization 하드웨어 레벨 가상화 OS 레벨 가상화 Startup Time 수분의 시작 시간 소요 수초의 시작 시간 소요 Isolation 완전한 격리 프로세스 레벨의 격리 Security 높은 보안성 낮은 보안성 Memory 일정 수준의 메모리 자원 요구 보다 작은 메모리 자원 요구 [표 2] 가상머신과 컨테이너 비교

컨테이너향이 성능면이나 배포 시 걸리는 시간 등에서 우위를 보입니다. 가상머신은 단일머신이 주는 완전격리로 인한 보안 측면과 가상머신이 설치된 각각의 OS에서 동작 가능한 장점을 가지고 있습니다. 많은 서비스들이 컨테이너향으로 전환하고 있지만 데이터센터와 공용클라우드 환경에서는 가상머신 사용이 더욱 확산되고 있습니다. 또한 두 가상 기법은 상호부족한 점들을 채워나가며 발전하고 있습니다. 가상머신은 마이크로 가상머신으로 진화하면서 경량화와 기동시간을 줄이고 있으며 컨테이너 또한 격리성을 강화해 보안성을 높이고 있습니다.

그러면 쿠버네티스를 사용하는데 있어 해당 서비스를 어느 환경에서 이용하는 것이 효과적인지를 고민해 볼 필요가 있습니다. 분리된 서비스의 구성이 단순하며 나눠진 서비스들이 동작하는 OS 환경이 제각각이라면 쿠버네티스 환경에서 서비스들을 배포하는 것이 오히려 독이 될 수도 있을 것이기 때문입니다.

마이크로서비스 아키텍처를 언급할 때 ‘데브옵스(DevOps)’라는 용어를 빠뜨릴 수 없습니다. 서비스 단위가 소형화되면서 업데이트와 업그레이드가 상대적으로 용이해졌으며 이는 릴리즈 주기를 단축하는데 큰 이점이 되었습니다. 이를 보다 효과적으로 프로세스화하기 위해 데브옵스라는 개발 프로세스를 도입하는 기업이 많아졌습니다. 이름 그대로 개발(Development)과 운영(Operations)을 나누지 않고, ‘개발 + 테스트 + 배포 + 운영’을 동시에 할 수 있는 IT 환경 또는 문화가 등장하게 된 배경입니다.

개발 관점에서 마이크로서비스 아키텍처를 처음 접하게 되면 도메인 바운더리로 나눠진 서비스에 대해 더 많은 권한을 가질 수 있게 되어 환호할 수도 있지만 복잡도가 높아질수록 서비스에 대한 책임이 더 늘어나게 되는 것을 경험하게 됩니다.

여러 서비스들 간의 트랜잭션 처리는 이미 이슈가 아닌, 당연히 해결되어야 할 덕목으로 자리잡았으며 대표적인 해결 방안으로 Two-Phase Locking (2PL), Saga, Try-Later 같은 서비스 구성 패턴 등이 있습니다. 또한 서비스 간 통신의 홉(Hop)이 늘어날수록 응답시간 지연에 대한 처리 정책이 필요하며 요청에 대응하는 방식으로 동기 및 비동기, 모두를 고민해야 하는 상황이 발생하는 것입니다.

운영 관점에 보면 마이크로서비스 아키텍처를 통해 중앙에서 서비스들을 관리하거나 조율하지 않도록 설계했지만 여러 서비스들이 공통적으로 영향을 받거나 적용 처리가 필요한 사항들이 나타나게 됩니다. 아무래도 서비스의 바운더리를 구분지을 때 세분화한 영향도 있지만 요구사항이 바뀜에 따라 분리된 서비스에도 공통의 변경사항이 생기는 등 서비스를 효율적으로 운영하기 위한 요구사항이 끊임없이 발생하게 되는 것입니다. 참고로 쿠버네티스 환경에서는 Configmap을 통해서, 가상머신 환경에서는 Spring Cloud Config와 같은 서비스가 대안이 될 수 있습니다.

3. 당신이 고려해야 할 것은?

디자인 패턴으로 유명한 마틴 파울러는 “Don’t even consider microservices unless you have a system that’s too complex to manage as a monolith.”라고 말했습니다. 즉, “모놀리식으로 관리하기에 특별히 복잡한 시스템을 운영할 상황이 아니면 마이크로서비스는 고려할 필요조차 없다”고 피력했습니다. IT업계에 만연해 있는 마이크로서비스 아키텍처에 대한 무조건적인 찬사가 아닌, 필자가 생각하는 바와 어느 정도 일맥상통하는 바가 있어 소개해 드렸습니다.

[그림 3] 시스템 복잡도와 아키텍처

시스템 복잡도 단계에 따라 아키텍처 선택 시 개발 생산성에 크게 영향을 받을 수 있습니다. 특히 SW 엔지니어에게는 개발, 운영에 관한 다양한 스킬셋과 해결 방안뿐 아니라 단일 서비스가 아닌, 전체 동작에 대한 이해까지 요구될 수 있기 때문에 더욱 신중을 기하여 아키텍처를 선정해야 합니다.

지금은 각광받는 오늘의 기술이 순식간에 수명을 다해 어제의 기술이 되어버리는 시대입니다. 수도 없이 쏟아지는 트렌디한 기술 속에서 우리는 중심을 잃지 말고 진정으로 좋은 아키텍처, 좋은 기술이 무엇인지를 냉철하게 고민할 필요가 있습니다. 고객의 요구사항을 정확하게 이해하고, 해당 기술 스펙을 꿰뚫어 보며, 개발팀의 기술셋과 프로세스를 면밀히 분석하여 최적의 아키텍처와 기술을 선택하는 것이 IT 전문가가 갖추어야 할 덕목 중 하나라고 생각합니다.

마지막으로 마이크로서비스 기반 애플리케이션을 도입하거나 또는 전향을 고민하고 있다면 최소한 아래 사항을 고려해 볼 필요가 있습니다.

* 비용: 특정 서비스 아키텍처를 도입할 경우 비용을 얼마나 절감할 수 있는가?

* 개발 생산성: 마이크로서비스를 요구할 만큼 시스템 복잡도가 높은가? 또는 복잡도를 지나치게 높인 마이크로서비스가 생산성을 저해하고 있지는 않은가?

* 운영: 개발팀에게 개발과 운영을 동시에 요구할 만큼 인프라가 준비되어 있는가?

본 아티클이 마이크로서비스 기반 애플리케이션을 고민하고 있는 독자에게 간략하게 나마 전반적인 흐름을 이해하는데 도움이 될 수 있기를 기대합니다. 더 나아가 좋은 기술을 활용하여 좋은 서비스를 개발한다는 것에 대해 폭넓은 관점으로 고찰해 볼 필요가 있다는 화두를 던지고자 합니다.

# References

[1] https://www.gartner.com/en/documents/3886164/hype-cycle-for-application-architecture-2018

[2] https://cazton.com/consulting/enterprise/software-architecture

[3] https://thenewstack.io/guide-for-2019-what-to-consider-about-vms-and-kubernetes/

[4] https://martinfowler.com/bliki/MicroservicePremium.html

[5] https://www.backblaze.com/blog/vm-vs-containers/

에스코어 – 에스코어는 경영 컨설팅 전문성과 소프트웨어 기술력을 바탕으로 성공적인 디지털 트랜스포메이션을 위한 IT 전략 수립, 신기술 소프트웨어 개발 및 기술 서비스를 One-Stop으로 제공합니다. 본 아티클은 에스코어 홈페이지에서 PDF 파일로 다운로드 받을 수 있습니다. – PDF 다운로드

▶ 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에 저작권이 있습니다.

▶ 해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.

마이크로서비스 개념, 장점, 아키텍처, 적용 사례

마이크로서비스란 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할합니다. 모든 요소를 하나의 애플리케이션에 구축하는 전통적인 모놀리식 접근 방식 대신 마이크로서비스에서는 모든 요소가 독립적이며 연동되어 동일한 태스크를 완수합니다. 이러한 각각의 구성 요소 또는 프로세스가 마이크로서비스입니다. 소프트웨어 개발에 대한 이러한 접근 방식은 세분화, 경량화되어 있으며 다수의 애플리케이션 간에 유사한 프로세스를 공유하는 기능을 중시합니다. 이는 클라우드 네이티브 모델 구현을 위해 애플리케이션 개발을 최적화하는 데 필요한 주요 구성 요소입니다.

여기서 마이크로서비스 기반 인프라를 사용하려는 이유가 무엇인지를 파악해야 합니다. 개발자의 목표는 고품질 소프트웨어를 보다 신속하게 제공하는 것입니다. 마이크로서비스는 이 목표를 실현하기 위한 수단이 되며, 이때 고려해야 할 사항이 있습니다. 바로 애플리케이션을 마이크로서비스로 분할하는 것으로는 충분하지 않다는 사실입니다. 애플리케이션을 관리하고 오케스트레이션하며 여기서 생성되고 수정되는 데이터를 처리해야 합니다.

마이크로 서비스 아키텍처란 무엇입니까?

마이크로서비스 아키텍처 는 애플리케이션을 특정 비즈니스 기능을 구현하는 개별 서비스로 분해하여 현대 개발자에게 확장성이 뛰어나고 유연한 애플리케이션을 설계할 수 있는 방법을 제공하는 기술을 의미합니다. “느슨하게 결합 된” 서비스라고도 하는 이러한 서비스는 독립적으로 구축, 배포 및 확장할 수 있습니다.

각 서비스는 서비스를 다른 언어 또는 다른 기술로 작성할 수 있게 하는 표준화된 API (애플리케이션 프로그래밍 인터페이스)를 통해 다른 서비스와 통신합니다. 이것은 서비스가 뗄 수없이 서로 연결되어 있고 함께 확장될 수 있는 모 놀리식 구조로 구축된 시스템과는 완전히 다릅니다.

각 서비스는 기능이 제한되어 있기 때문에 크기와 복잡성이 훨씬 적습니다. 마이크로서비스라는 용어는 물리적 크기가 아닌 이 개별 기능 설계에서 비롯됩니다.

마이크로서비스 아키텍처를 선택해야 하는 이유?

마이크로서비스 아키텍처는 모듈식 특성이 유연성, 확장성 및 개발 노력 감소로 이어지기 때문에 인기가 높아졌습니다. 배포 유연성과 클라우드 네이티브 서버리스 및 서비스로서의 기능 배포 옵션 (예 : AWS Lambda 및 Microsoft Azure Cloud Functions)의 부상으로 마이크로서비스가 오늘날의 IT 환경에서 번창할 수 있는 완벽한 환경이 만들어졌습니다. 이러한 클라우드 플랫폼을 사용하면 마이크로서비스 와 기능을 비활성 상태에서 대량으로 확장하고 다시 되돌릴 수 있으며 고객은 사용하는 컴퓨팅 용량에 대해서만 비용을 지불합니다.

기업이 보다 민첩하려고 하고 병목 현상을 줄이며 애플리케이션 제공 시간을 개선하기 위해 지속적으로 노력함에 따라 마이크로서비스 아키텍처의 인기가 계속 높아지고 있습니다.

키워드에 대한 정보 마이크로 서비스 아키텍처

다음은 Bing에서 마이크로 서비스 아키텍처 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  One Ok Rock | One Ok Rock - The Beginning [Official Music Video] 47 개의 새로운 답변이 업데이트되었습니다.
See also  껑 으로 시작 하는 단어 | [단편영화] 끝말잇기의 신 빠른 답변

See also  Instrukcja Mycia Zębów Dla Dzieci | Heconia -Mycie Zębów 22565 투표 이 답변

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기
[Talk\u0026Talk] #누구나 #쉽게 #이해할수 #있는 #마이크로서비스 #아키텍처(MSA) ##1편


YouTube에서 마이크로 서비스 아키텍처 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [Talk\u0026Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) #1편 | 마이크로 서비스 아키텍처, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment