블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

마이크로서비스 아키텍쳐에 대한 소고



간만에 낚시성 제목을 달아봤는데, MSA (마이크로 서비스 아키텍쳐)가 필수라는 이야기는 꼭 틀린말이라고 볼 수 는 없습니다. 특히나 개발팀의 규모가 큰 경우나, 지리적으로 개발팀이 나눠져 있는 경우에는 서비스 단위로 나눠서 각 팀이 서비스를 개발하고, 독립된 기술과 개발 체계를 가지면서 빠르게 개발해 나가는게 효율적이기 때문에, 규모가 어느정도 되는 팀에서는 효율성이 높습니다.


중앙에서 통제할 필요 없이, 각자가 알아서 설계하고, 만들고, 테스트 하고 운영하기 때문입니다.

이것을 분산 거버넌스라고 하는데, 관리나 의사결정의 권한을 중앙의 팀이 중앙 통제하지 않고, 각자의 팀에 자율적으로 맏기고, 책임도 맏긴다는 이야기 입니다.


그러면 분산 거버넌스를 하면,중앙 거버넌스가 필요하지 않냐?


MSA글을 보면, 보통 분산 거버넌스와 이에 대한 필요성과 장점에 대해서만 이야기를 한다.

그러나, MSA에 과연 중앙 거버넌스가 필요하지 않을까?


개인적인 생각으로는 이 또한 강한 중앙 거버넌스가 필요하다.

첫번째로, API로 서비스를 제공하기 위해서는 API 표준이 맞아야 한다. 헤더 구조, URI 컨벤션, Granuality (서비스 크기), 에러 추적을 위한 로깅 메세지의 표준화가 필요하다.

두번째로, 서비스의 기능에 대해서, 어떤 기능이 필요한지, 필요하다면 기능이 어떤 동작을 어떻게 하는지에 대한 정확한 스펙에 대한 정의가 필요하다 이건 서비스를 제공하는 팀 보다는 서비스를 사용하는 팀 입장에서 해야 한다.

세번째로, 이러한 서비스를 엮을려면, 필요에 따라서 aggregation API를 만들거나 또는 서비스 자체에 기능을 추가해야 하는데, 팀 이기주의로 인하여 타팀으로 일을 떠넘기는 현상이 생길 수 있기 때문에 중앙에서 이를 조율할 필요가 있다.


실제로 MSA와 유사한 구조로 서비스를 개발해본 경험으로 보면, 이러한 중앙 통제가 필요하고 거기에 드는 추가적인 비용 (코디네이션/조율)이 만만하지 않다.


또한 다른 문제점중의 하나는 각 서비스팀별 개발 수준이나 품질 수준이 다르기 때문에, 기능을 추가하고자 할때도 어느 서비스(즉 팀으로 보낼것인가)를 고민해야 한다는 것이다.


MSA의 도입은, 각 서비스 개발팀의 수준이 높아야 권한을 분산할 수 있고, 또한 중앙집중형 거버넌스 조직을 통해서 표준화등이 강력하게 이루어져야 한다.


결론적으로 난이도가 높은 아키텍쳐 스타일이라는 이야기이고, 전사 개발팀 차원에서의 많은 투자가 필요할듯 하다.


SSAG에서 토론글 중, 홍성진님이 재미있는 링크를 올려주셔서 첨부합니다

http://siliconangle.com/furrier/2011/10/12/google-engineer-accidently-shares-his-internal-memo-about-google-platform/


본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

SOA 가 어려운 이유..

아키텍쳐 /SOA | 2008.11.12 15:00 | Posted by 조대협
SOA가 나온지도 오래되었고 개념이 좋다는 것은 다들 인정하고 있지만 쉽게 확산 되지 않는 이유가 무엇일까?
결과부터 따져보자면

성공적인 SOA<-- 성공적인 거버넌스 <-- 강력한 파워와 조직

SOA는 기업의 모든 업무를 서비스화하여 재 사용하고자 하는 아키텍쳐이다. 단순한 프로젝트처럼 단기간에 끝낼 수 있는 것도 아니고, 한팀이나 TF형식으로 만들고 끝날 수 있는 것이 아니라. 장기적인 관점에서 소프트웨어 컴포넌트를 서비스화하여 자산화 하고, 이 자산을 재 사용해야 한다.

그러기 위해서 가장 중요한 것이 장기적인 계획을 세우고 각 비니지스 업무 부서를 조율하여 서비스를 생성 및 관리하고 조합하여 업무에 반영 하는 역할을 할 수 있는 것!!이 필요하다.
이 "것" 이 거버넌스 인데. 거버넌스는 전체 SOA를 통제할 수 있는 조직과, 프로세스, 그리고 이것을 뒷받침해줄 플랫폼이 포함된다. 물론 여기에 돈이나 시간도 들어가겠지만 가장 중요한것은 이 3가지인데...
대부분의 실패한 SOA의 문제점을 이 거버넌스에서 생각해볼 수 있다.

  • 거버넌스 조직 구성 부터 생각해보면, 거버넌스 조직은 SOA를 수행할 만한 기술과 업무에 대한 전문적인 지식과 함께, 각 비지니스 부서를 통제할 수 있는 POWER가 있어야 한다. 거버넌스의 실무 인원들이 그런 POWER를 가지기는  불가능하고, 거버넌스 조직의 LEADER가 결국 그 힘을 주는 것인데.. SOA 거버넌스 모델에서는 그런 사람을 BACKER라고 한다. 한국말로 하면 빽..!! 거버넌스 조직이 실력과 이만한 파워를 갖춰야 각 업무 부서를 통제하고 서비스를 착착 만들어 나갈텐데.. 이것이 안되니 SOA가 제대로 될리가 있나?? 보통 이런 조직은 기업에서는 CIO 산하의 정보전략이 리딩을 하는게 하는것이 맞는데.. 정보전략이 그만한 힘이 없거나 또는 그만한 전문성이 없거나 단기적인 프로젝트에 집중할때 문제가 생긴다.
SOA 프로젝트가 다른 프로젝트와 틀린것은 기존 프로젝트는 하나의 비지니스 업무에 대해서 한 LOB에서 단기간에 시스템을 구축하면 끝났지만, SOA는 전사적으로 아키텍쳐가 설정되어야 하고 거버넌스 조직에 의한 전략에 따라서 LOB 간의 협업이 중요한데.. 사람이 하는일이니 쉽지 않은가 보다.
  • 프로세스 측면에서는, 프로세스가 현실과 동떨어져 있는 경우가 많다. RUP가 거버넌스 프로세스는 아니지만 예를 들어보면 좋은 방법론과 프로세스임에는 확실하지만 무겁고 이해하기가 어렵다. LOB별이나 직원별의 기술 수준이 다르기 때문에 프로세스에 대한 적응도가 떨어질 수 밖에 없고 있는 거버넌스의 실패 그리고 통제의 실패와 프로젝트의 실패로 연결이 된다. 그러면 어떻게 해야 하나? 프로세스는 가볍고 이해하기 편해야 한다. 커뮤니케이션 파이프라인은 되도록이면 짧아야 한다. 내 경우에는 감히 "하향 평준화"를 하라고 이야기 하고 싶다.
  • 시스템 관점에서 보면, 거버넌스 시스템의 예로 PPMS(프로젝트 관리도구), SCM(형상 관리 도구) 등이 있지만!! 실제 프로젝트를 보면 툴 따로 실제 업무 따로인경우가 많다. 툴은 업무를 돕는것이지 툴에 업무를 맞추는게 아니다. 물론 툴이 무지 좋다면 그것도 방법은 되겠지만...
사실 거버넌스의 실패가 SOA에만 해당되는 이야기는 아니다. 일반 프로젝트도 거버넌스의 실패가 대부분의 실패 요인이 되니까는 그럼에도 불구하고 SOA에서 거버넌스의 중요성을 언급한것은 위에서도 이야기 했지만, SOA는 장기적이고 여러 부서에 걸쳐 있는 프로젝트이기 때문에 무엇보다도 통제가 중요하기 때문이다..

이글을 썼다가 날라가서 다시썼는데.. 내용이 좀 꼬이는듯 하네..

'아키텍쳐  > SOA' 카테고리의 다른 글

OMG released SOAML draft  (0) 2009.01.16
Composition 과 Mashup의 차이  (0) 2008.11.13
SOA 가 어려운 이유..  (0) 2008.11.12
관심이 가는 오라클 제품들  (0) 2008.10.15
2008년 SOA 전망  (0) 2008.01.10
Next Enterprise  (0) 2007.12.21
본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.