마이크로 서비스(MSA)에서 분산 트랜잭션

분산 트랜잭션은 무엇인가? 아래는 트랜잭션을 사용한 Monolithic 커머스 시스템이다. 위의 경우는 체크 아웃 요청에 대해 데이터베이스에서 트랜잭션이 생성된다. 각 비즈니스 단계에 대해서 데이터베이스에서 보장한다. ACID(Atomicity, Consistency, Isolation, Durability)로 알려져 있다. 아래는 마이크로 서비스에서의 커머스 시스템이다. 모놀리틱은 데이터베이스에 의존하여 트랜잭션을 처리하지만, 마이크로 서비스의 경우 데이터베이스에 의존할 수가 없다. 그 이유는 각 서비스마다 별도의 데이터베이스를 가지고 있기 때문이다. 마이크로 서비스에서 트랜잭션에 대한 문제 마이크...

더보기

마이크로 서비스(MSA)를 사용하지 않는 경우

본 글은 찰스 페발의 블로그의 글을 번역한 것이다. 굳이 마이크로 서비스가 필요하지 않는 상황에서도 “마법의 키워드”와 같이 마이크로 서비스를 꼭! 해야 한다는 상황에서 정말 그래야 하는지 고민해 볼 필요가 있다. 마이크로 서비스란? 마이크로 서비스에는 많은 정의가 있다. 일반적으로는 아래와 같이 요약된다. 마이크로 서비스는 구성 요소 설계 및 배치 아키텍처에 적용 되는 패턴이다. 서비스를 작게 유지하고 기능별로 그룹화 한다. 관심사를 분리하여 구현한다. 서로 자율적으로 분리되어 있어야 한다. 독립적 배포 및 버전을 조정하여 확장할 수 있어야 한다. 마이크로 서비스 패턴의 일반적인 구현은...

더보기

마이크로 서비스(MSA)의 경계

마이크로 서비스를 사용하면 이점을 얻을 수 있지만, 경험에 비추어보면 몇 가지 문제가 있었다. 영향을 최소화 할 수 있도록 도출된 문제를 인식하는 것이 중요하기에 여기에 몇 가지 적는다. 문제 중 하나는 마이크로 서비스의 경계를 잡는 일이다. 이것은 가장 어려운 작업이다. 마이크로 서비스 범위 설정 각각의 마이크로 서비스가 단일 책임의 원칙을 수용하는 구조라면 이 글을 쓸일이 없었을 것이다. 커머스 플랫폼에서 결제를 담당하는 서비스를 생각해보자. 처음에는 두 가지의 지불 방법 (카드와 바우처)만 존재했고, 이 두가지 방법이 동일한 서비스에서 구현되었다고 가정한다. 여기에 계좌 이체, Paypal등 다른 결...

더보기

Netflix 미디어 데이터베이스

Netflix의 목표는 전 세계 수백만 회원의 재생 시작 시간을 최소화하는 것이다. 이를 위해서 ISO BMFF의 Header 크기에 대한 통계량(최소값, 최대값, 중간값, 평균값등)을 수집해야 한다. Netflix의 Transcoding Pipeline은 방대한 콘텐츠 카탈로그를 서비스하며 모든 콘텐츠에 대해 다양한 코덱+품질 조합을 생성한다. 과거에는 비트 스트림 헤더 정보를 클롤링하는 일회성 스크립트를 작성해야만 데이터를 분석할 수 있었고 이러한 접근 방식에는 확장성이 없었다. 본 글에서는 Netflix의 Media Data Base 시스템에 대해서 소개하고자 한다. 왜 미디어 전용 데이터 베이스가 필...

더보기

Netflix OSS 및 Spring Boot

Netflix의 Backend 및 Mid-tier 어플리케이션의 대부분은 Java를 사용하여 구축되었고, Micro Service를 위해 필요한 Ribbon, Eureka, Hystrix등 클라우드 인프라 라이브러리 및 시스템을 구축했다. 2015년도에 Spring Cloud Netflix는 1.0 버전이 나왔고, Spring Boot를 사용하여 Netflix OSS 구성 요소를 결합하기 위한 커뮤니티 노력의 일환이었다. Netflix는 2018년 부터 Spring Cloud Netflix를 통한 커뮤니티의 산출물을 이용하여 Java 프레임워크로 Spring Boot로 전환하였다. Netflix가 내부 구성...

더보기

MSA(마이크로 서비스 아키텍처)에 대해서 생각해보기

마이크로 서비스는 지난 몇년 동안 매우 인기 있는 주제였다. 마이크로 서비스는 왜 그렇게 인기가 있을까? 아래는 가상 비디오 공유 플랫폼이 Monolithic 형태로 구현 된 후에 마이크로 서비스 형태로 구현되는 방식이다. 위의 시스템의 차이점은 하나의 큰 덩어리와 작은 단위라는 점이다. 독립 개발: 작고 독립적인 구성 요소는 그에 맞춰진 작고 독립적인 팀으로 구성할 수 있다. 독립 배포: 각 구성 요소는 독립적으로 확장 할 수 있다. 새로운 서비스가 출시 되면 모든 구성 요소를 배포하지 않고 해당 구성 요소만 배포가 가능하다. 재사용성: 구성 요소들은 작고 특정한 기능을 수행한다. 다른 서비스...

더보기

Microservice의 ROI를 측정을 위한 매개변수

마이크로서비스 개발을 위한 ROI를 알고자 하는 CIO/CTO가 상당히 많습니다. 그들 중 일부는 수익대비 비용으로 측정하려고 노력하고 있습니다. 이런 사항들은 CIO/CTO가 고민해야 할 관심사이고 비즈니스에 미치는 영향이 중요하고 변경된 개발 사항이 매출 증가로 이어져야 하기 때문입니다. 그러나 개발은 다른 고려 사항을 염두하고 시작해야 합니다. 고객 및 이해 관계자를 행복하게 만드는 것은 중요한 행동이며 더 좋은 비즈니스 결과로 이어지게 됩니다. MSA(Microservice Architecture)는 즉각적인 영향을 줍니다. 마이크로서비스 구현시 ROI를 측정하는 가장 좋은 방법은 아래의 매개 변수를 ...

더보기

블록체인 기술을 바라보는 개인적 시각

블록체인 기술을 한마디로 정의하기는 어렵다. 개념이 명확하게 정리되지 않은 상태이기에 기술적 정의 및 설명하는 방식도 상황에 따라 달라진다. 블록체인 기술을 이해하기 위해서는 비트코인에 대해서 알아야한다. 비트코인은 블록체인 기술을 기반으로 2009년에 배포된 암호 화폐이다. 비트코인으로 인해 그 기반 기술인 블록체인이 이목을 끌기 시작했다. 블록체인은 “블록”이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반의 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 방식의 데이터 변조 방지 기술이다. 계모임을 한다...

더보기