MSA

2020-07-31
필자는 마이크로서비스 아키텍처 Microservice Architecture (이하 MSA) 기반으로 커머스 시스템을 만들고 있다. MSA에서 어려운 점 중 하나는 데이터 일관성을 유지하는 일 이다. 예를 들어 주문 프로세스(결제, 주문 원장 기록, 재고 차감 등등)는 모두 성공하거나 하나라도 실패한다면 이전 상태로 되돌아가야 한다. 모놀리틱 아키텍처 Monolithic Architecture 와 관계형 데이터베이스를 사용하는 전통적인 시스템은 데이터베이스 트랜잭션을 사용하여 데이터 일관성을 보장한다. 반면 마이크로서비스마다 데이터베이스를 따로 사용하는 MSA는 데이터베이스 트랜잭션만으로 보장이 안된다. 왜냐하면 통합된 하나의 데이터베이스를 사용하지 않기 때문이다. 물론...
2020-04-29
이 글은 적당히 갖춰나간 운영 환경 의 후속 글이다. 이전 글에서는 서비스의 외형적인 모습을 소개했다면, 이번 글에서는 그것을 가능하게 했던 내부의 문화를 소개한다. MSA Micro Service Architecture 이 삽질을 3년이나 하고 나서야 뼛속까지 알게 되었다. 이건 기술의 문제가 아니었다. 문화였고 일하는 방식이었다. 익스트림 프로그래밍 Extreme Programming, 이하 XP 이 소개된 지는 이미 20년이 넘었지만, 계속해서 XP를 얘기하는 이유는 MSA Micro Service Architecture 는 일하는 방식과 떼어서 얘기할 수 없기 때문이다. 아주 많은 작은 서비스들에게 역할과 책임을 부여하고, 그 서비스들이 상호 작용하며 만들어낸 서로 공존하는 상태. 그것이 바로 MSA 아니던가? 마이크로 서비스를 만드는 사람들이 이렇게 일을 하고 있지 않으면, 그건 거추장스러운 기술 셋으로 덧씌워진 또 다른 형태의...
2020-04-15
2016년, 중국 패션 리테일 영역의 클라우드 서비스 회사가 되겠다는 야심 찬 희망을 품고 아기 발걸음 [1] 을 시작했고, 2020년 현재 아래와 같은 구성을 갖추었다. 처음부터 이런 구성을 그려놓고 차근차근 갖춰 나간 것은 아니었다. 2016년 봄, 알리 클라우드에 3대의 리눅스 서버를 구매해서 1대에 대충 스테이징 환경과 각종 관리 툴을 세팅하고 2대 서버에 운영을 위한 최소한의 구성만 갖춘 채 첫 번째 기능을 출시했다. 매번 필요할 때마다 점진적으로 아키텍처를 개선해 나갔고, 4년이 지난 지금 꽤 그럴싸한(?) 모양을 갖추게 되었다. 지금 우리가 갖추고 있는 기술 셋을 소개해본다....
2020-03-18
지금까지 고객이 구매할 수 있는 오퍼 Offering 를 만들고 [1] 쇼핑몰에 노출하였다. [2] 그다음으로 해야 할 일은 오퍼를 장바구니에 담는 것이다. ShoppingCartService는 마이크로서비스 모듈로서 장바구니를 책임진다. Mall은 ShoppingCartService의 API를 이용하여 오퍼를 장바구니에 담는다. 불변성과 의존성 장바구니는 여러 개의 장바구니 아이템을 담을 수 있다. 여기서 오퍼라 하지 않고 ‘장바구니 아이템’이라고 부른 이유는 장바구니에는 오퍼뿐만 아니라 다른 것도 담을 수 있다는 추상적인 의미가 담겨 있다....
2020-03-12
소프트웨어를 배포할 때 비로소 가치는 생겨납니다. - The Nature of Software Development , 26 쪽 소프트웨어는 사용자를 만날 때 진정한 가치가 생긴다. 내가 만든 소프트웨어가 사용자를 만날 수 있도록 서버에 배포해보자. 지금까지 세 개의 모듈을 만들었다. product-service : 상품 API를 제공하는 서비스 product-admin : 상품 관리자 서비스 mall : 사용자 쇼핑몰 모듈을 각기 다른 서버에 배포할 수도 있겠지만 내가 선택한 방법은 단일 서버에 모든 모듈을 배포 하는 것이다....
2020-02-20
필자가 가지고 있는 자산 중 하나는 전자상거래(이하 커머스) 도메인에서의 개발 경험이다. 오픈소스가 세상을 바꾸어가는 모습을 지켜보면서 개인의 보이지 않는 경험이라는 무형의 자산 으로 머무는 것이 아나라 구체화하여 코드라는 유형의 자산 으로 만들고 싶은 욕구가 있었다. 밈 Meme ‘페르시아 왕자’라는 책 이 있다. 동명 게임의 개발 일지인데 어린 시절 이 게임에 푹 빠져 밤을 지새우며 했던 기억이 아직도 생생하다. 갑자기 웬 게임일까? [caption id="attachment_25949" align="alignnone" width="409"]...
2020-01-07
https://www.popit.kr/2-데이터-엔지니어와-마이크로-서비스-구축-si-프로젝트/ 이전 포스팅에서 데이터 엔지니어링에 대해 알아보았습니다만, 이 글의 주제는 어디까지나 데이터 마이그레이션에 대한 것이지 데이터 엔지니어링에 대한 것이 아닙니다. 디지털 트랜스포메이션 절차에서 데이터 엔지니어 투입 타이밍 웹 로그 수집을 통해 구글의 빅쿼리(BigQuery), 구글 애널리틱스 를 활용하여 개인화 추천 콘텐츠를 제공하는 등의 데이터 엔지니어링은 이미 대부분의 커머셜 기업에서 이미 수행중인 작업이고, SI 프로젝트의 영역이 아닙니다. 현재 행해지는 데이터 엔지니어링은 웹 로그 분석을 통한 것이 대부분으로, 핵심 비즈니스 프로세스를 건드리지 않고 아우터 아키텍트 (로그 데이터 중앙 수집기 등) 영역에서 비교적 쉽게 수집할 수 있는 것이기 때문에 데이터 분석 부서에서 독립적으로 수행할 수 있는 영역입니다. 따라서 이 글의 본래 목적인 ERP 등과 같은 정규화 된 비즈니스 데이터로부터 디지털 트랜스포메이션을 작업을 수행하기 위한 use case 를 살펴보도록 하겠습니다. 다음은 클라우드 사업자가 말하는 디지털 트랜스포메이션 작업 절차입니다....
2020-01-07
https://www.popit.kr/1-데이터-엔지니어와-마이크로-서비스-구축-si-프로젝트/ 많은 경험있는 프로젝트 리더들은 이전 포스팅 된 글에서 나온 실시간성 데이터 이관 문제를 해결하기 위해 ETL(Extract, Transform, Load) 과정을 떠올릴 수 있습니다. 그리고 ETL 을 수행하기 위해 어떠한 유형의 솔루션을 선택해야 할 지 선택하게 됩니다. 그리고 앞선 상황에서 "TB 단위의 데이터", "새로운 데이터베이스" 등의 키워드 때문에 데이터 분석 전문가를 찾게 되고, 실시간 스트리밍 분석 엔진 또는 데이터웨어 하우스, 또는 둘 다 필요하다는 답변을 들을 것입니다. 이 개념들의 이해를 돕도록, 대표적 솔루션인 Apache Spark(실시간 스트리밍 분석 엔진) 와 AWS Redshift(데이터웨어 하우스) 를 비교하여 설명드리겠습니다....
2020-01-07
본 글은 ** 이커머스 업체의 ERP 정산 시스템 노후화 개선 ** 에 대한 해결 가능성을 문의받고, 문제를 해결하기 위해 여러 자료를 분석 후 개인적인 경험과 함께 정리하여 남기는 글 입니다. 파일럿의 함정 디지털 변혁은 현재 피할 수 없는 유행어지만, SI 프로젝트를 통해 기업의 핵심 비즈니스를 변혁시키는 미션에서 성공한 케이스는 거의 없는 것으로 파악되고 있습니다. 이노베이션은 기존 방식을 유지한 채 기술만 덧붙이는 것 입니다. 트랜스포메이션은 조직운영의 모든 과정을 완전히 바꾸고 디지털화한다는 점에서 더 총체적 입니다. 비즈니스의 핵심기술과 시장 접근방식, 고객과의 관계 등을 근본적으로 바꾸는 것 입니다. 보통 기업들은 일부 사업부에서 SI 업체를 통한 파일럿 프로젝트를 통해 트랜스포메이션을 시도 합니다. 그런데 이 파일럿 프로젝트가 끝날 때쯤 경영진이 착각합니다. 한 번 해본 것으로 기업의 트랜스포메이션이 끝났다고 보고 멈춰버립니다. 그 수준을 뛰어넘지 못하고 방향을 잃어버리는 상태를 파일럿의 함정이라고 말합니다. 해외보다 국내 기업들 사이에서 소규모 파일럿 형태로 트랜스포메이션하려는 선호가 더 많은 것 같습니다....
2019-11-05
쇼핑몰의 주문 상세 화면은 일반적으로 주문 내역과 배송 정보, 결제 정보 등을 보여준다. 이럴 때 하나의 데이터베이스를 사용하는 모놀리틱 아키텍처 Monolithic Architecture 에서는 여러 테이블을 조인하면 되지만 다수의 서로 다른 데이터베이스를 사용하는 마이크로서비스 아키텍처 Microservice Architecture 에서는 여러 마이크로서비스의 데이터베이스에 정보가 들어 있기 때문에 데이터베이스의 물리적 조인이 어렵다. 따라서 마이크로서비스 아키텍처에서 주문 상세 화면은 여러 API를 호출하여 화면을 구성하기 마련이다. [caption id="attachment_24473" align="alignnone" width="889"]...
더보기