MSA

2023-01-03
MSA 환경에서 일하는 Front-end 개발자들을 만나면 나는 종종 이런 말을 듣는다. 주문서 화면을 만들 때 4~5개를 호출해서 조합해야 했어요. - 개발자 A 기부 상세 화면을 만드는데 같은 기부 번호로 여러 API를 호출해서 조합하고 있어요 - 개발자 B 벡엑드 개발자분이 API를 너무 잘 개 만들어 놔서 하나의 화면을 만들때 여러 번 호출하는게 너무 불편합니다. 에러 처리하기도 그렇고요. 한 번의 호출로 만들어 달라고 요청했는데 거부 당했습니다. - 개발자 C 무엇이 문제인가?...
2022-08-16
마이크로서비스 아키텍처가 많이 보급 되면서 클라이언트와 서버 간의 인증 상태를 유지하는 기존의 전통적인 서버 세션 방식과는 다른  클라이드 사이드 세션인 JWT(JSON Web Token) 방식이 많이 활용되고 있습니다. 필자도 처음에는 "마이크로 서비스에서는 인증은 주로 JWT를 사용한다" 라는 의견에 공감하면서 그냥 생각없이 사용하고 있었는데 한번은 정리해야 할 필요성을 느껴 정리해볼까 합니다. 이번글에서는 기존의 세션 방식과 JWT Token 방식은 어떤  차이가 있으며 마이크로 서비스에서는 왜 JWT가 사용되는지, 보안적으로는 어떤 고려할 사항들은 어떤 것들이 있는지 알아 보겠습니다....
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(데이터웨어 하우스) 를 비교하여 설명드리겠습니다....
더보기