본문 바로가기

Sorry Architecture

Microservices, and Hangul(한글)

2016년, 마이크로서비스(Micro-services) 또는 마이크로서비스 아키텍처(MSA, Microservices Architecture)에 대해 회사 내부에서 세미나를 했었다. 세미나의 시작은 스핀에커(Spinnaker)를 소개하는 것이었지만, 스핀에커를 잘 소개하기 위해서는 많은 배경지식을 먼저 소개해야 했고 그래서 마이크로서비스, 이뮤터블 인프라스트럭처(Immutable Infrastructure), 지속적 전달(Continuous Delivery) 등의 개념과 특징, 장점, 사례 등을 설명하는 것이 필요했다. 그 중 중요한 한 가지 주제는 마이크로서비스였다. 마이크로서비스를 설명하면서, 청중의 이해를 돕기 위해 키보드를 예시로 들었다. 대부분의 사람들이 컴퓨터에는 익숙했기 떄문에, 그 들에게 키보드를 통해서 마이크로서비스를 설명하는 것이 매우 유용할 것이라고 생각했다. 키보드를 자세히 보면 마이크로서비스의 특징이 잘 나타나 있다고 말했다.

먼저, 마이크로서비스는 각자의 일을 충실히 잘 해야 한다. 'A' 또는 'ㄱ'을 입력하는 키는 항상 이 문자를 잘 입력해 주면 된다. 해야할 일은 명확하고 해서 안되는 일도 명확하다. 'A' 키가 두 번 연속으로 누르면 'B'가 되고 실수로 세 번 눌렀을 때 'C'가 입력된다면 모든 사람이 짜증을 낼 것이다. 'A' 키는 항상 입력에 대하여 정확하게 자신이 맡은 일을 하면된다. 그런데 많은 개발자들은 이렇게 단순화된 구조를 너무 시시하다고 말하면서 조건문을 현란하게 사용하는 걸 즐긴다. 물론 조건문을 잘 사용해서 간결하면서도 많은 경우를 해결하는 것은 뛰어나기 때문에 무조건 잘못 되었다고 말할 수 없다. 그러나 규모가 큰 시스템(System)을 구축할 때 간결하면서도 단순정확한 부품으로만 구성한다면 많은 장점을 기대할 수 있다. 시스템에 문제가 생겼을 때, 각 부품으로부터 기대하는 결과가 단순하기 때문에 소거법을 적용하기에 유리해진다. 그래서 문제를 빨리 파악하고 해결할 수 있다.

다음으로, 각 마이크로서비스는 독립적이어야 한다. 키보드의 키가 서로 영향을 주지 않는 것처럼 (최대한, 되도록) 각 마이크로서비스는 서로 영향을 주어서는 안된다. 'A'키가 망가져서 부품을 교체하는 동안 'B'가 동작하지 않는다면 그것은 마이크로서비스를 제대로 설계하지 않은 것이다.

다음으로, 각 마이크로서비스는 조합이 가능해야 한다. 키보드를 여러 개 눌러서 단어와 문장을 만들어 내듯이 마이크로서비스 또한 여러 서비스를 조합해서 새로운 서비스를 만들어내야 한다. 여기서 유한한 규칙을 가지고 무한한 가치를 창조하는 놀라운 일이 일어난다. 물론 무한한 가치도 유한한 규칙(문자)의 범위에 들겠지만 한글의 자음과 모음 24개로 우리는 매우 많은 문장을 창조할 수 있다. 너무 놀라운 일이다. 그래서 마지막에 이렇게 말하면서 마이크로서비스의 특징을 설명했다. "여러분이 지금 한글을 사용하시는 데 불편함이 없습니다. 한국어말고 한글[각주:1]입니다. 여러 분이 마이크로서비스를 설계하신다면, 한글처럼 만들려고 노력하면서 설계하셨으면 좋겠습니다."

By Kbarends - This file has been extracted from another file, Public Domain, https://commons.wikimedia.org/w/index.php?curid=4210804

 
다음은 마이크로서비스에 대한 설명이다.

In computing, microservices is a software architecture design pattern, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task.

 
그리고 아래는 위키피디아에 있는 마이크로서비스[각주:2]에 대한 설명이다.

Microservices are a software development technique —a variant of the service-oriented architecture (SOA) structural style— that arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight.

 

'Sorry Architecture' 카테고리의 다른 글

CI/CD Pipeline  (0) 2019.02.21
Circuit Breaker  (0) 2019.02.21
PhoenixServer  (0) 2019.02.20
Netflix Frigga  (0) 2019.02.18
Cloud Computing  (0) 2019.02.18