Loading...
2020. 11. 2. 22:10

[MSA] 6. MSA의 트랜잭션 이야기 2 - Two-Phase commit과 Saga

이전 글에 이어서 MSA 내에서 트랜잭션을 원활히 하는 방법 2가지를 소개해드리고자 합니다. 관계형 데이터베이스와 더불어 모놀리틱 아키텍처를 도입한 서버 애플리케이션은 DB 서버에서 제공하는 Commit과 Rollback을 이용하여 데이터를 일관성 있게 제어할 수 있었습니다. 그러나 MSA에서는 각 서비스별로 DB 인스턴스와 애플리케이션이 분리됨에 따라 관계형으로 맺어진 Entity들은 서로가 다른 인스턴스로 운영되고, 그들 리소스를 받기 때문에 데이터의 일관성이 무너지게 됩니다. 이를 위해 우리는 분산 트랜잭션 기술을 이용하여 이들 일관성을 지킬 수 있는 방법이 있습니다. 1. Two-Phase Commit Two-Phase Commit이란, 2단계에 거쳐서 영속하는 작업을 말합니다. 이렇게 말하면 아..

2020. 9. 27. 19:53

[MSA] 5. MSA의 트랜잭션 이야기 1 - 트랜잭션의 이해와 MSA에서 바라보는 트랜잭션

이 글을 작성하기 전에 어떤 제목을 붙여야 할지 많은 고민을 하였습니다. MSA에서 트랜잭션의 문제는 현재 대두되고 있는 가장 큰 문제라고 할 수 있습니다. 이번 포스트에서는 트랜잭션의 기본 이야기와 모놀리식의 트랜잭션, MSA에서 트랜잭션에 대해 정말 깊게 다뤄보는 시간을 가져보도록 하겠습니다. 3 파트로 나누어 진행될 예정이며 1번째 파트에서는 트랜잭션에 대한 기본을 이야기 하고, 모놀리식의 트랜잭션을 다뤄보고자 합니다. What is Transaction ? 트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말합니다. 데이터베이스에서 대표적으로 가능한 작업에는 검색(SELECT), 수정(UPDATE), 삽입(INSERT), 삭제(DELETE)가 있습니다. 이 중에서 데이터베..

2020. 3. 11. 19:01

[MSA] - 4. Circuit Breaker를 이용한 장애 처리

MSA에 대해서 우리는 각 API 서버를 분리하여 용도별로 인스턴스를 나누고, 앞단에서 Gateway를 사용해 클라이언트가 원하는 서비스를 주고, 로드 밸런싱 등의 작업이 들어갈 경우, Service Discovery를 통하여 원하는 서비스를 동적으로 찾아주는 방법까지 알았습니다. 그런데, 이렇게 서비스를 분리함으로써 한 인스턴스가 모든 서비스를 감당하는 부분이 완화되는 등의 장점이 생겼지만, 만약 서비스에 장애가 발생한다면 그 장애는 어떻게 처리할 수 있을까요? 서비스가 분리되어 있는 상태에서 클라이언트의 잘못된 입력 값 등으로 생기는 오류는 논리적인 오류입니다. 따라서 이런 오류는 Exception 등의 처리를 통해서 클라이언트에게 오류를 알려주고, 이를 처리하는 방식으로 진행할 수 있습니다. 하지만..

2020. 1. 27. 13:08

[MSA] - 3. 필요한 서비스를 찾아주는 Service Discovery

안녕하세요. 다들 구정 연휴 잘 보내고 계신가요? 구정 언휴긴 하지만, 저에게는 길게 느껴지는 연휴인지라, 오늘도 이렇게 끄적여 봅니다. 오늘은 Service Discovery에 대한 이야기를 다뤄보도록 할게요. 서비스 디스커버리는 지난 API Gateway에서도 잠시 다뤘던 내용이지만 서비스가 분리되어 있는 MSA에서 각 서비스가 다음에 불러야할 서비스가 어디에 있는지를 찾아주는 검색 기능입니다. What is Service Discovery ? 쉬운 설명을 위해 Wi-Fi를 예로 들어보겠습니다. 우리는 스마트폰이나 태블릿 PC, 노트북에서 인터넷을 사용하기 위해 Wi-Fi에 연결해야 합니다. 원래라면, 직접 SSID를 입력해야만 하죠. 하지만 AP 검색 기능을 제공하기 때문에 우리는 이렇게 디바이스에..

2020. 1. 8. 12:14

[MSA] - 2. API Gateway가 필요한 이유

안녕하세요. 이번 글은 MSA에 대한 글을 이어서 API Gateway에 대한 이야기를 하고자 합니다. 지난 MSA 글에서는 MSA를 왜 써야하는지, 어떨 때 필요하고, 무슨 장단점이 있는지를 간략하게 설명해보는 아주 쉬운 이야기를 다뤄봤습니다. 사실 MSA의 깊이는 그것보다 깊기 때문에 제대로 이야기를 하고자 한다면, 많은 이야기가 될 것 같아 짧게 필요한 부분을 설명드린 것이구요. 타 글에서 좀 더 심층적으로 다뤄볼까 합니다. Spring Cloud를 사용해서 간단히 API를 구성하는 방법도 알았고, 이와 비슷하게 Python의 Django, Flask 등 타 언어, 타 프레임워크에서도 어떻게 구성할 수 있는지 감이 잡혔을 것이라 생각합니다. 오늘은 이들 API를 그룹화 시켜주는 API Gateway..

2019. 12. 5. 12:00

MSA (Micro Service Architecture) 란 무엇일까?

안녕하세요. 오늘은 Micro Service Architecture에 대해 이야기 해보고자 합니다. 한동안 MSA가 굉장히 화두였는데, 요즘은 분위기가 식어지는 듯하여 오늘 블로그에 이 글을 적게 되었습니다. 우리는 백엔드 개발을 위해서 Spring, Django 등 다양한 프레임워크를 사용하여 개발을 하게 됩니다. 보통 이들 프레임워크를 이용해서 특정 기능을 수행하는 API를 설계하고 개발하여 서비스하는 것이 기본 형태이죠. 이렇게 UI, 비즈니스 로직, 데이터 레이어까지 모든 것을 한 통 속에서 운영하는 방식을 모놀리틱 아키텍처라고 이야기 합니다. 흔히 학부에서 운영체제 과목을 수강해보신 분들이라면, 모놀리틱 커널이라는 단어를 들어보셨을텐데, 거기에서 나오는 모놀리틱과 동일한 단어입니다. 그런데, 이..