마이크로서비스와 SaaS와의 관계
마이크로서비스와 SaaS에 대해 먼저
개념에 대한 정리가 필요합니다.
제가 이해한 개념에 대해 정리한 사항입니다.
2000년대 분산처리 아키텍처 및 소프트웨어
공학 (복잡도, 중복도에 대한 대책) 측면에서 CBD 및 SOA 관심
높아짐
2000년대 웹사이트 간 인터페이스 기술 대안으로
웹서비스 관심 높아짐
2000년대
ESB 기반의 SOA 프로젝트가 많이 진행됨 – 결과적으로 초기 이해 부족과 ESB 종속성 때문에 기대한 결과 확보가 어려워짐
2000년 중반 웹서비스 및 비동기 연동기술(AJAX)를 통한 매쉬업이 관심 높아짐
2000년 말 온디맨드 서비스를 확장한 Cloud 서비스 개시 (모든 것의 가상화가 시작됨)
2010년 구글, 아마존 등의 시스템 구축 및 운영 방식 + Cloud 서비스 관심도
높아짐
2013년
Martin fowler가 마이크로서비스 아키텍처 개념 제시 – 웹서비스 및 비동기 연동기술로 구현한 분산처리 아키텍처 및 소프트웨어
공학 방법에 대한 정리
2010년 실리콘밸리 스타트업 들의 마이크로서비스
아키텍처 적용 사례 확대 – Netflix, Facebook 등 기존
monolithic 구조에서 microservices 구조 전환 성공 사례
2010년 중반 마이크로서비스 아키텍처 구조를
지원하는 개발도구, 운영도구 (Docker) 출시 – 기존에도
있던 기능을 마이크로서비스 환경으로 확장
2010년 마이크로서비스 형태의 어플리케이션
개발자 공유 트랜드 형성 – Github 통해 모듈화된 서비스 및 기능에 대한 개발자 커뮤니티 생성
2010년 마이크로서비스 형태의 개발조직 Scrum 및 개발 후 운영, 고도화 DevOps, 반복적인 개발 -> 운영 -> 개발 형태 Agile방법론, 초기 소규모 서비스에서 지속적으로 서비스를 추가하는 형식의
CI(Continuous Integration)에 대한 개념이 한국에도 소개됨
---- 여기까지는 외국의 사례 ^^
2010년 중반 이후 한국에서도 마이크로서비스
아키텍처와 DevOps조직, Agile 방법론, CI에 대한 관심이 높아집니다.
기존 조직을 DevOps팀으로 개명하고, 프로젝트 진행 시 아침에 Scrum 미팅하고 Pilot 기반으로 고객요구사항 받는 Agile방법론.. 그리고 source를
branch 따서 개발하다가 version 통합하는 CI
수행.. REST API 만들어보는 마이크로서비스 구성…
한국에서 IT 서비스 사업의 특징인 고객의
요구사항을 받아서 분석/개발/테스트 하는 전통 방식에서는
그다지 효율적이지 않은 도구인 것 같습니다. 그래서 국내
IT 서비스 사업 방식인 SI 프로젝트에서는 성공 사례가 없을 것 같습니다.
하지만 플랫폼 기반 사업자인 Kakao, Naver
등에서는 이러한 방식으로 조직 및 방법론을 전환하였고, 사업의 경쟁력을 확보하고 있다고
생각됩니다.
---- 여기까지는 한국의 사례 ^^
자사도 2000년 대 초반 진행한 H사 NIS 프로젝트를 SOA 기반으로 진행하였습니다. SOA에 대한 결과나 평가는 기대 이하였고, 얼마 후
고도화 프로젝트에서 ESB를 제거하게 됩니다.
2010년 사업부 체계로 조직이 변경되면서 해운, 항만, 물류 및 기타 조직에서 각자 제품 개발 및 사업을 진행합니다.
2010년 고객마다 새로운 버전의 제품이 나와
관리해야 할 대상은 많아지고 제품의 품질 수준은 관리 노력보다 나아지지 않고 있습니다.
현재 고객들은 더 저렴하고 품질 좋고 바로 사용할 수 있는 서비스 형태로 제공하는
비즈니스 시스템을 요구하기 시작했습니다.
그래도 다행히 솔루션 기반 SI 프로젝트에
대한 고객 수요가 남아 있습니다.
--- 여기까지는 현재까지의 자사
사장님이 플랫폼 사업으로 회사를 재창업 선언을 하시고, 사업부 체계가 아닌 역할별 통합형태로 조직이 구성되었습니다.
사업부 체계에서는 하지 못한 부분이 이제 좀더 가능한 상황입니다.
다소 허황되어 보이지만 다음과 같은 요구가 예상되는 시점입니다.
1.
전 제품의 기능의 공통화/표준화
2.
전 제품의 상호 연동성 향상
3.
전 제품의 외부 기술 연동성 향상
4.
전 제품의 신기술 도입 가속화
5.
전 제품의 동시 성능 향상
6.
전 기능의 매일 업데이트/배포 가능
7.
전 제품의 대량 판매 가능
허황된 목표를 달성하기 위해서는 기존과 다른 생각,
방법이 필요할 것 같습니다.
새롭게 일할 수 있는 환경을 구성하고 다른 조직에서 성공한 새로운 방식을 도입하고
새로운 문화를 만들어야만 달성 가능할 것입니다.
앞서서 시도하는 조직이 필요할 것이고 이를 준비하고 실행하는 프로젝트를 작은 규모로
진행하려고 합니다.
--- 여기까지는 본 프로젝트를 통해 해보고
싶은 변화?
문의 1. [프로젝트]에서 '마이크로 서비스'이외에 다른 SaaS 기능(ex. 테넌트 격리 아치텍처..등 )은 어떤것을 고려하시는지요 ?
마이크로서비스 = REST API 제공하는
작은 단위 서비스로 이해가 된 것 같습니다. 정확히 표현하면 마이크로서비스 아키텍처 구성이고, 플랫폼 구성요소 중 고객별 테넌트 분리항목과 통합항목을 구분하고 이를 적용하기 위한 방안(아키텍처)를 수립할 예정입니다.
본 프로젝트는 고객별로 다른 프로세스, 다른
설정, 다른 기능 구성 (가변성 관리)에 대해서도 마이크로서비스 (REST API) 개발 후 조합하는 형식으로
생각하고 있습니다.
방안 수립을 컨설팅 통해서 진행할 예정이며, 결과물을 통해 SaaS 방안에 대해 이해할 수 있도록 준비하겠습니다.
문의 2. 계획서에 있는 협역업체가 아래와 같은 SassS 파트너 프로그램에 포함되어 있는 'APN 기술 파트너'와 비슷한 지원을
받을 수 있는 궁급합니다.
- 잘 알아보셨을 것인데, 워낙 SaaS 실패 사래가 많이서 노파심에 문의 드립니다.
APN 기술 파트너 프로그램은 PaaS 플랫폼 제공업체가 지원하는 걸로 AWS, Google, IBM, MS
등이 할 수 있을 것 같아요. 다만 APN 기술
파트너가 되면 그 회사의 PaaS 플랫폼에 종속(Engagement)
될 가능성은 있습니다.
좋은 점은 DevOps 환경
구성 및 플랫폼에서 필요한 Value Chain (가입자 관리 등..)에
대해 사전 구성된 서비스를 사용할 수 있을 것 같네요.
1단계
컨설팅 진행 결과에 따라 특정 업체 선정 및 2단계 PoC 수행을 진행할 예정입니다. 전사적으로 종속성이 없게 기술본부주도로 아키텍처 및 운영 방안, 개발 방법론이 수립된 후 업체 선정이 될 것으로 기대하고 있습니다.
문의 3. '마이크로서비스'는 2016년부터
많이 이야기 되었지만, 아래 '3가지 전체조건'때문에 쉽게 논의하기 힘들었던 것으로 알고 있습니다.
특히,
Culture 부분이 많이 고민되었는데, PM님만의 해결방안을 들을 수 있으면 많은 도움이
되겠습니다.
확장성에 대한 3차원 모델은 다음과 같은
구조입니다. Y축은 기능분해(마이크로서비스), X축은 서버 병렬구성 서버스펙 향상, Z축은 데이터 파티션, 샤딩 (테넌트별로 서버 분리)
말씀하신 데로 문화와 조직과 도구가
(Process, People, Tool) 바뀌어야지만 도입이 가능한 것이 새로운 아키텍처라고 생각합니다.. 맞구요 ^^
이런 고민과 관련된 도서가 많이 나와 있습니다.
제가 읽어본 책은 다음과 같습니다.
마이크로서비스 아키텍처 구축 – 대용량 분산 설계 (아키텍처 관리요소)
마이크로서비스는 기존 대용량 시스템의 복잡성과 운영?배포?유지보수의 문제점을 해결할 새로운 대안이다. 이 책은 마이크로서비스
아키텍처를 구축, 관리할 때 고려할 문제와 이에 관한 포괄적 시각과 실용적인 조언을 제공한다. 지속적 통합을 통해 개별 마이크로서비스를 배포하는 과정을 설명하고, 실제로
마이크로서비스를 도입한 기업들의 구체적 사례를 소개한다.
스프링 5.0 마이크로서비스 2/e (Java/JVM으로 마이크로서비스 구성 – 항공사 시스템 사례 포함)
마이크로서비스는 복잡한 시스템을 더 작은 여러 개의
서비스로 나눠서 대규모의 비즈니스 서비스를 처리하는 아키텍처 스타일이나 패턴이다. 마이크로서비스는 자율적이고, 자기 완비적(self-contained)이며, 독립적으로 배포할 수 있다. 오늘날 많은 기업에서는 마이크로서비스로
대규모의 서비스 지향 기업 애플리케이션을 만드는 것을 표준으로 삼는다.
도메인 주도 설계 (해운선사
시스템 사례 포함)
소프트웨어의 복잡성을 다루는 지혜, 비즈니스를
도메인으로 분리하는 방법에 대한 아이디어를 제공합니다.
데브옵스 2.0툴킷 (DevOps 관리 도구)
클라우드 환경, DevOps 조직 개발/운영에 필요한 도구 목록 및 추천 도구 제시합니다.




