[후기]MSA, K8S를 이용한 대륙의 서비스 개발 사례

Open Infrastructure & Cloud Native Days Korea 2019 행사에 다녀왔습니다. 좋은 발표가 많았지만 'MSA, K8S를 이용한 대륙의 서비스 개발 사례' 후기를 공유합니다.

이 글은 슬라이드의 내용보다는 청중으로써 필자가 받은 느낌을 위주로 썼습니다. 전체 발표 슬라이드는 아래 링크에서 확인하실 수 있습니다.

https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

어떤 발표였나?

발표는 아래와 같은 주제로 진행되었습니다.

  • 중국 모바일 환경  특징
  • 마이크로 서비스 아키텍처
  • Windows, SQLServer, .NET, C/S 기반의 기술만 가지고 있는 조직이 어떻게 Linux, Cloud, 모바일/도커마이크로서비스 아키텍처 환경으로 전환할  있었는지와  과정

40 발표  먼저 10 정도 김형준 님이 중국 서비스 개발 경험을 공유하였고 나머지 30분은 북경의념과기발전 소속의 왕쯔강王志刚 님이 ‘Windows에서 Kubernetes’-‘전통적인 서비스에서 마이크로 서비스로 변화 과정 부제로 발표하였습니다. 그리고 왕쯔강 님의 회사 동료인 이명섭李明燮 님이 중국어 동시통역을 해 주셨습니다. 같은 회사의 동료가 통역을 해주어서 그런지 매우 자연스러운 발표를 들을 수 있었습니다.

먼저 발표를 하고 계시는 김형준 님

첫 번째 발표자 김형준 님

두 번째 발표자 왕쯔강 님

두 번째 발표자 왕쯔강 님

통역의 이명섭 님

통역의 이명섭 님

'애자일' 그리고 '일단 해 보자'

먼저 급변하는 중국 비즈니스 환경을 슬라이드 한 장에 담아 설명해 주셨습니다. 일본이 만든 QR 코드이지만 이를 제일 잘 쓰는 것은 중국이라는 것이죠.

이런 상황은 김형준 님의  '허술함을 가장한 애자일(느슨한 서비스)' 글에서 보다 현장감 있게 엿볼 수 있습니다.

모바이크오 오포의 사례에서 볼 수 있듯이 좋은 프로세스를 만들어서 서비스를 할 수 도 있지만 느슨하면서 허술한 프로세스로 얼마든지 서비스를 만들 수 있으며 시장을 차지할 수 있다는 것입니다. 이런 느슨한 서비스를 출시할 수 있는 것과 없는 것이 제가 느낀 한국과 중국과의 비즈니스의 가장 큰 문화적인 차이였습니다. - 허술함을 가장한 애자일(느슨한 서비스)

출처 : 허술함을 가장한 애자일(느슨한 서비스)

출처 : 허술함을 가장한 애자일(느슨한 서비스)

비즈니스처럼 서비스 개발/운영 역시 기민해야 하지만 개발 조직의 현실은 아래와 같았다고 합니다.

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

빠르게 변화하는 중국 비즈니스에 따라 불확실성이 크기 때문에 그만큼의 적응력과 유연성이 중요해지는데요. 어떻게 변화 시켰을까요?

필자가 보기에는 그 비결은  '일단 해 보자'였습니다. 전체 슬라이드에 반복적으로 등장하는 키워드였습니다. 지속적인 시도를 통해 얻은 피드백을 학습하여 개발 수준을 올리는 방식입니다. '학습 주의'라고도 하는데요. 많이 고민하지 말고 허술하더라도 일단 해보고 피드백을 받고 다시 하는 것을 계속 반복했다고 합니다. 마이크로서비스 Just Do It! 글에서 이 과정을 잘 보여 주고 있습니다.

누구도 이렇게 운영될 것이라고 예상하지 않았다. 심지어는 개발자들도 중간에 반신반의하면서 개발을 진행하였는데 결론은 다소 어려움이 있기는 하지만 다이나믹하게 기능을 계속 추가하면서 비즈니스 속도에 맞추어 개발을 진행할 수 있는 단계까지 올라오게 되었다. 그때 당시에는 안하는 것보는 하는 것이 한 걸음이라도 더 앞으로 나가는 것이기 때문에 그냥 했던 것이다. 그리고 이 방법밖에 없다고 생각했다. - 마이크로서비스 Just Do It!

애자일이라는 것이 무엇인가 어렵고 대단한 것이 아니라 바로 '일단 해 보자'가 아닐까라는 생각이 들었습니다.

그리고 개발 조직 사진(아래 슬라이드 오른쪽)을 보여 주셨는데요. 모두 자고 있습니다.((smile)) 언뜻 보면 부정적으로 보일 수 있겠지만 이런 여유가 변화의 또 하나의 동력이었다고 합니다.

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

필자는 예전에 매우 바쁘게 일한 적이 있습니다. 초과 근무가 일상이었죠. 누가 시킨 것도 아니었습니다. 이런 상황에서는 변화는커녕 일 자체도 즐기기 어려웠습니다.

톰 드마르코가 말한 슬랙Slack(사람들이 바쁘지 않은 시간을 뜻함)이 부족하지 않았나라는 생각이 드네요.

조직을 덜 효율적이게 만듦으로써 훨씬 더 나은 향상을 가져올 수 있다. 그러기 위해서는 충분한 슬랙을 조직에 제공함으로써 조직을 숨 쉬게 만들고 필수적인 변화와 재창조를 이끌어내야 한다. - Slack 36 쪽

변화는 Top-down

MS 기술 기반의 전통적인 개발 조직을 변화 시키기 위해 조직의 장은 아래와 같은 미션을 제시했다고 합니다.

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

많은 조직에서 위에서부터 목표를 제시합니다. 하지만 변화를 위한 전폭적인 지원과 시도를 독려하고 실패를 용인하는 조직은 많지는 않습니다.

필자가 보기에 슬라이드에 나와 있지는 않지만 보이지 않는 조직 장의 노력이 있었을 것이라고 생각합니다.

Form Follows Function

임춘봉 님과 안영회 님이 필자에게 알려 주신 Form Follows Function 이라는 공학의 원리가 있습니다. '형태는 기능을 따른다'는 것입니다. 

왕쯔강 님의 ‘Windows에서 Kubernetes’-‘전통적인 서비스에서 마이크로 서비스로 변화 과정’ 발표에 딱 맞는 말이었습니다.

ls 명령어(리눅스 명령어)도 모르는 조직에서 Docker를 선택하고 Kubernetes(이하 K8s)를 도입하게 되고 또 Kong을 도입하게 되는 과정은 특정 기술이 주도한 것이 아니라 문제를 해결하는 과정에서 조직에 현실에 맞는 기술은 선택한다는 관점에서 매우 자연스럽게 느껴졌습니다.

Docker를 써보자. K8s를 도입해 보자가 아니라. 우리는 이런 상황이고 이런 문제가 있고 그래서 하다 보니 Docker 였고 K8s였을 뿐이 라고 말하는 것 처럼 보였습니다.

이런 사정은 Micro Service, Docker로 할 수밖에 없었던 사연 글에서 잘 나옵니다.

Linux 그게 뭔가요?

데이터베이스 등은 알리 클라우드에서 기본적으로 제공하는 서비스를 사용하면 되지만, Linux 서버에 웹서버, 애플리케이션 서버, Kafka 등을 설치하는 등의 작업을 할 수 있는 인력이 없었습니다. 지금까지는 대부분의 개발자가 Windows 기반이었기 때문입니다. 그래서 선택된 것이 Docker 입니다. 왜 Docker를 선택했는지 물어보니 다음과 같은 답변을 들을 수 있었습니다.
  • 프로그램 개발 하는 것 처럼 configuration 만 하면 서버를 쉽게 구성할 수 있다.
  • Linux 커맨드 등을 잘 알지 못해도 이미 구성되어 있는 Docker 이미지를 사용하면 대부분은 해결이 가능하다.
  • .Net, Go 등 다양한 환경이 있는데 이런 환경을 쉽게 관리하는 것이 가능하다.
  • Kafka, ElasticSearch 등에 대한 설치, 운영 경험 등이 없는데 Docker 이미지를 사용하면 어렵지 않게 구성할 수 있다.
즉, Linux 환경을 모르고 있었던 것이 Docker를 사용하게 된 결정적인 이유가 되었습니다. - Micro Service, Docker로 할 수 밖에 없었던 사연

그리고 이런 변화의 바탕에는 슬라이드에서 반복되는 '일단 해 보자'라는 것이 깔려 있었습니다.

자체 개발한 관리 도구

MSA 환경에서 많은 마이크로 서비스를 관리하고 모니터링 하는 것은 여간 어려운 것이 아닙니다. 많은 오픈 소스가 있지만 개발 조직 입맛이 딱 맞는 도구를 찾기 어려운 것 같습니다. 그래서인지 자체 개발한 도구의 소개도 있었습니다.

MSA 모니터링은 자체 개발한  Mingbi明白 로 하고 있다고 합니다.

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

실제로 중국의 쇼핑 축제인 광군제에서 사용했던 경험이 2018 광군제(双十一) 서비스 운영 후기 글에 잘 나와있습니다.

그리고 이번에는 제대로된 모니터링을 위해 작년부터 조금씩 개선해오던 자체 개발한 모니터링 도구인 밍바이(明白) 를 적극적으로 활용해보려고 하였습니다. 여러 작은 서비스들이 연결되어 운영되는 방식이라 문제 발생 시 또는 성능 문제 발생 시 어느 서비스에서 문제가 발생한 것인지 찾기가 어려운데 이런 문제점을 해결하기 위해 분산된 서버들 간의 호출간의 관계를 보여주고 각 요청의 Latency, Request parameter 정보 등도 바로 확인할 수 있는 기능을 가지고 있습니다. - 2018 광군제(双十一) 서비스 운영 후기

그리고 200개 이상의 마이크로 서비스를 관리하기 위해 K8s 관리 도구를 자체 개발했다고 합니다.

image2019-7-29_8-31-11

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

출처 : https://www.slideshare.net/babokim/open-infradays-2019msak8s?fbclid=IwAR3E0Rk_7IMsHYH5bKtL3WLD0mMKG4K9SoK48J9kjF4f4RKFaRNmMfLJhyk

시스템을 운영하면서 이런 자동화 도구를 개발하고 사용하는 것이 생산성 향상에 매우 크게 기여한다고 생각하는데요. 더 나아가 시스템 다운 타임을 줄여 줄 수도 있다는 생각이 들었습니다.

마치며

슬라이드 내용 중 젠킨스 스크립트나 Docker file은 개발자인 필자가 느끼기에 매우 구체적이어서 많이 와닿고 현장감이 느껴졌습니다. 마지막으로 발표를 해주신 김형준 님과 왕쯔강 님 그리고 통역에 이명섭 님께 감사말 전합니다.


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.