Tag Archives: MSA

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

마이크로 서비스 아키텍쳐(Micro Service Architecture)는 줄여서 MSA라고 부르며 서비스를 기능별로 작게 쪼개는 서버 아키텍쳐의 디자인 패턴으로, 기본 컨셉은 하나의 서비스는 한가지 일에 초점을 맞춘다는 것입니다. 또 다른 서비스와의 연계는 API로 구현합니다.

마이크로 서비스 아키텍쳐 구현 프로세스는 크게 4단계로 나눌 수 있는데, 구체적인 처리 절차는 다음과 같습니다.

STEP 1. 기능별로 서비스 어플리케이션 구분

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 2. 서비스 이미지 개발

– 이때 각각의 서비스 어플리케이션은 수샙, 수백여개의 서비스들로 구성되며, 각 서비스는 적절한 CPI, Memory, I/O리소스를 제공받아야 하고, 배포는 빠르고 효율적이어야 함. 참고로 배포 방법은 서버마다 전체 서비스를 적용하는 방법, 서비스를 VM위에 적용하는 방법, 서비스를 도커 콘테이너 위에 적용하는 방법 등이 있습니다.

– 서버별로 서비스를 적용하면 배포 및 서비스의 시작속도가 빠르다는 장점이 있습니다. 그러나 한 서비스 인스턴스가 CPU와 메모리를 모두 사용하는 문제점이 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– 서비스를 VM에 적용하면 서비스별로 고정된 자원을 사용할 수 있고 클라우드 인프라 기능을 활용할 수 있다는 장점이 있습니다. 반면에 의도 해던 기능 외의 다른 VM의 기능은 낭비된다는 단점이 있고, 또 VM 자체를 관리해주어야 하는 오버해드를 가지고 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– 마지막으로 서비스를 도커 콘테이너에 적용하는 방법이 있는데, 이는 VM의 장점을 거의 포함하면서 VM 보다는 가볍다는 잇점이 있습니다. 반면에 VM보다는 다소 기능이 떨어 질 수 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 3. 클라이언트에서 필요한 서비스 선택

– 실제 서비스 설계시 클라이언트에서 어떤 기능을 필요로 하는지 모델링을 할텐데, 이때 기능에 중복성을 없애면서 통신을 최소 하는 방향으로의 설계가 바람직합니다.

– 최적화 된 클라이언트의 구현 방법으로 API Gateway와 IPC(Inter-process Communiation)의 두가지 방법이 있습니다.

– API Gateway는 내부 시스템 아키텍쳐를 캡슐화 해서 클라이언트에 적합한 API를 제공하는 방식인데, 이는 주로 Netty, Vert.x, Node.js, Nginx와 같은 비동기, 논블로킹 I/O를 지원하는 플랫폼으로 개발됩니다. 또 통신 규격의 다양화로 이중 가장 효율적인 것을 선택할 수 있다는 장점이 있으며, Auto Scaling 및 IP 주소 변경에 유연하게 대응할 수 있다는 장점이 있습니다. 마지막으로 서비스 오류 핸들링을 용이하게 할 수 있다는 장점이 있는데, 넷플릭스의 Hystrix가 바로 그 예입니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– IPC(Inter-process Communication)은 서비스-클라이언트, 서비스-서비스간 통신 구현 방식인데, 구현 방법에 따라 동기적(request)/비동기적(message-based) 방식으로 나뉩니다. 주로 HTTP Rest나 Thrift 프로토콜을 많이 사용하며, 서비스 오류 핸들링이 용이하다는 장점이 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 4. 인스턴스 선택/관리

– 서비스가 가상화되먄 여러 인스턴스로 실행 시킬 수 있습니다. 이때 Auto Scaling 혹은 장애 등으로 IP 주소가 변화될 수 있습는데, 장애를 막기 위해 서비스 레지스트리에 자신의 상태를 전달합니다. 이때 상태 전달을 hearbeat이라고 호칭합니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

 

마이크로 서비스 아키텍쳐의 장점을 요약하면 다음과 같습니다.

  • 빠른 복구
  • Scaling
  • 서비스 확장 용이
  • 대규모 장애 확률 감소
  • 협업 용이

 

반면에 마이크로 서비스 아키텍쳐의 단점은 다음과 같습니다.

  • 복잡함
  • 트렌잭션 관리 어려움
  • 다중 테스트
  • 소규모 장애 확률 증가

 

 

아키텍쳐 패턴이란 – 소프트웨어 디자인 패턴

외국인회사에 있다 보면 개발자 채용시 아키텍쳐 설계 부분도 이야기를 하게 됩니다. 그러면 어떤 어프로치로 소프트웨어를 설계해야 하느냐에 대한 논의를 하게 됩니다.

소프트웨어 개발/설계시 아키텍쳐링을 하다 보니 반복되는 패턴이 나오기 시작했고, 사람들은 이 패턴에 이름을 붙이기 시작했습니다. 즉, 아키텍쳐 패턴(Archiectural Patterns)이라 함은 소프트웨어 디자인 패턴이라고 할 수 있습니다. 참고로 패턴(Pattern)=유형,종류 라고 간주하셔도 될 것 같습니다.

 

아키텍쳐 패턴(Architectural Patterns)은 대략 다음의 10가지 종류가 있습니다.

1. Layered pattern

2. Client-server pattern

3. Master-slave pattern

4. Pipe-filter pattern

5. Broker pattern

6. Peer-to-peer pattern

7. Event-bus pattern

8. Model-view-controller pattern

9. Blackboard pattern

10. Interpreter pattern

 

여기에 하나 빠진것이 있다면 최근 떠오르는 MSA(Micro Service Architecture)가 있을텐데요… 이정도 길이면 학생들 가르킬때 21주짜리 프로그램이 하나 나올법도 하네요.

MVC(Model-view-controller) pattern은 Django, Rails와 같은 웹 어플리케이션 개발에 주로 응용되는 아키텍쳐

MVC(Model-view-controller) 아키텍쳐 패턴(Architectural pattern)은 웹 어플리케이션 개발에 주로 이용되는 아키텍쳐 패턴입니다.

MVC는 다음의  3개 파트로 구성되어져 있습니다.

  • 모델(model) – 기본 함수와 데이터를 포함합니다
  • 뷰(view) – 정보를 사용자에게 보여줍니다. 웹페이지 그 자체를 생각하시면 될 것 같습니다
  • 컨트롤러(controller) – 사용자로부터의 입력을 처리합니다

이 패턴의 기본 아이디어는 UI/연산(모델)/제어를 각각 분리하여 효율화를 하겠다는 것입니다. 실제 서비스 구축시에는 각각의 파트가 서버 인스턴스로 구성되어 퍼포먼스에 따른 서버 리소스 할당을 하여 효율화를 하기도 합니다.

MVC(Model-view-controller) pattern은 Django, Rails와 같은 웹 어플리케이션 개발에 주로 응용되는 아키텍쳐

MVC 아키텍쳐 패턴은 Java, Python, PHP와 같은 주요 프로그래밍 언어로 웹 어플리케이션 아키텍쳐 디자인시 주로 사용되고 있으며, Django나 Rails와 같은 웹 프레임웍(Web frameworks)에서도 사용되고 있습니다.

MVC 아키텍쳐 패턴은 동일한 모델에 대해 여러개의 뷰를 만들 수 있으며, 런타임에 동적으로 연결 및 해제를 할 수 있다는 장점이 있습니다. 그러나 이것이 오히려 복잡성을 증가시키며, 사용자의 행동에 대한 불필요한 업데이트가 많이 발생할 수 있다는 단점 또한 가지고 있습니다.

최근에는 RESTful API (Open API) 기반의 서비스/소프트웨어 개발이  널리 이용되면서 점차 MSA(마이크로 서비스 아키텍쳐; Micro Service Architecture)로 이동하는 추세를 보이고 있습니다.

비스타에 이은 마이크로소프트 윈도우 차기 버전「윈도우 7」

마이크로소프트(MS)가 내부적으로 ‘버전 세븐(7)’이라 부르는 차기 버전의 윈도우를 앞으로 3년 이내 출시할 계획을 수립 중인 것으로 알려졌다.

MS는 19일(미국시간) 플로리다 올랜도에서 열린 자사 영업인력들을 위한 한 컨퍼런스에서 ‘윈도우 7’에 관해 이야기했다.

이에 관해 알려진 사항은 많지 않지만 현재 MS는 차기 MS 윈도우 클라이언트 버전인 윈도우7의 출시 일정을 구체적으로 수립하는 단계에 있는 것으로 알려졌다. 기업 고객 및 협력업체를 대상으로 앞으로 여러 차례 이와 관한 정보를 발표할 계획이라고 한다.

출시 지연을 거듭했던 윈도우 최신 버전인 윈도우 비스타는 5년 이상의 개발기간 끝에 지난해 11월에는 기업고객을 대상으로, 1월에는 일반소비자를 대상으로 각각 출시됐다. 비스타는 탄생하기까지 내부적 개발 방침의 변경과 개발 과정에서 나타난 문제들 때문에 여러 차례 우여곡절을 겪었다.

윈도우7은 비스타와 마찬가지로 일반 소비자 버전과 기업 버전 그리고 32비트와 64비트 버전으로 나누어 출시된다. 아울러 MS는 윈도우 보완을 위한 서브스크립션 모델(subscription model)을 고려 중임을 확인해 주었으나 이의 일정에 관해서는 구체적으로 밝히지 않았다.

현재로는 윈도우 비스타 서비스 팩1이 올해 이전 출시를 위해 준비 중이다.

비스타 지연으로 인해 기업 고객들로부터 받은 비난을 감안하면 윈도우의 미래에 관한 논의가 새삼스럽지만은 않다. 현재 상당수의 기업들이 이른바 소프트웨어 어슈어런스(Software Assurance: MSA)라는 라이선스 계약 하에서 소정의 사용료를 지급하며 MS 소프트웨어를 사용하고 있다.

윈도우 7은 이전에는 비엔나(Vienna)라는 코드 네임으로 알려졌다. 한 MS 관계자에게 확인한 바에 따르면 윈도우 7은 차기 윈도우 클라이언트 버전의 MS 내부 코드명이라고 한다. 이에 관한 자세한 사항은 기업 고객 및 협력업체를 대상으로 공개됐다. MS는 기업 고객, 특히 MSA 고객들을 위한 MS의 지속적 가치 창출 계획을 이들과 공유하고 있다.

MS는 윈도우 7의 개발기간을 3년 정도로 잡고 있다. 구체적 출시 일자는 궁극적으로 품질기준 부합 정도를 보고 그에 따라 결정될 것이라고 한다. @