MSA

    [MSA] 리액티브 마이크로 서비스 패턴

    마이크로 서비스 아키텍처에도 디자인 패턴이 존재한다. 그 중 하나가 바로 '리액티브 마이크로 서비스 패턴'이다. 리액티브 패턴은 기존 마이크로 서비스의 문제를 해결하기 위해 등장한 패턴으로 서비스간의 의존도를 낮추는것이 가장 큰 목적이다. 보통의 경우에 서비스 간의 통신을 위해서 RESTful API와 같은 블로킹 I/O 모델을 사용해 동기식 통신을 구현하곤 했다. 동기식 블로킹 I/O를 사용하면 서비스가 요청을 처리하는 동안 운영체제의 스레드를 점유하게 된다. 동시 요청 수가 증가하거나 요청과 관련된 컴포넌트가 증가하면 운영체제의 가용 스레드가 부족해 응답 시간이 늦어지거나 서버가 중단되는 문제가 발생할 수 있다. 따라서 동기식 블로킹 I/O를 과도하게 사용하면 마이크로서비스 시스템에 에러가 발생하기 ..

    마이크로서비스를 위한 git branch 생성 자동화

    마이크로서비스를 위한 git branch 생성 자동화

    서비스 branch 간의 의존성을 최소한으로 하고, 하나의 branch를 하나의 개별적인 레포지토리처럼 사용할 수 있는 branch 생성, 병합 전략을 만들어 보았다. 잘못된 점이나 추가할 사항이 있다면 가감없이 피드백 부탁드립니다! 먼저 일반적인 Branch 명명 규칙을 알아보자 1. Master Branch 레포지토리를 새로 만들면 가장 먼저 만들어지는 브랜치 Release(배포) 할 수 있는 브랜치의 이력을 관리하기 위한 최상위 브랜치로 사용된다. 즉시 배포 가능한 상태만을 관리한다. 2. Dev Branch 다음 출시 버전을 개발하는 브랜치 Master에서 분기되어 기능 개발을 위한 브랜치들을 병합하기 위해 사용한다. 일반적인 모놀리식 아키텍처에서는 이 브랜치를 기반으로 개발이 진행된다. 기능 개..

    [컴퓨터 구조] 다중 프로세서 시스템 #2

    [컴퓨터 구조] 다중 프로세서 시스템 #2

    [컴퓨터 구조] 다중 프로세서 시스템 #1 MIMD 조직의 다중프로세서 구조에 대해서 알아보자. MIMD의 밀결합 방식이란? 주기억장치가 어느 한 프로세서에 속하지 않고, 모든 프로세서들에 의해 공유되는 방식을 의미한다. 프로세서는 분 hyeo-noo.tistory.com MIMD의 소결합 방식이란? 프로세서들이 기억장치를 공유하지 않고, 각 프로세서가 자신의 기억장치를 별도로 가지고 있는 방식이다. 소결합 방식을 사용하는 다중 프로세서 시스템을 분산-기억장치 시스템 구조라고 부르겠다. 분산-기억장치 시스템 분산-기억장치 시스템의 특징은 다음과 같다. 각 프로세서가 자신의 기억장치를 별도로 가지고 있기 때문에, 프로세서가 실행할 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 프로세서의 기억장치로 적재..

    [컴퓨터 구조] 다중 프로세서 시스템 #1

    [컴퓨터 구조] 다중 프로세서 시스템 #1

    MIMD 조직의 다중프로세서 구조에 대해서 알아보자. MIMD의 밀결합 방식이란? 주기억장치가 어느 한 프로세서에 속하지 않고, 모든 프로세서들에 의해 공유되는 방식을 의미한다. 프로세서는 분산되어있지만 기억장치를 공유하기 때문에 각각의 프로세서가 기억장치라는 매개체를 통해서 밀접하게 연관되어 있다는 뜻의 밀결합 방식이라고 생각된다. 밀결합 방식을 사용하는 다중 프로세서 시스템을 공유-기억장치 시스템 구조라고 부르겠다. 공유-기억장치 시스템 이 시스템의 장점은 다음과 같다. 프로세서들이 공통으로 사용하는 데이터들이 공유 기억장치에 저장되므로, 별도의 프로세서 간 통신 메커니즘이 필요하지 않다. 프로그램 실행시간 동안에 각 프로세서들이 처리할 작업들을 동적으로 균등하게 할당할 수 있기 때문에, 프로세서 이..

    모놀리식  &  마이크로서비스 아키텍처(분산 시스템)

    모놀리식 & 마이크로서비스 아키텍처(분산 시스템)

    모놀리식 아키텍처 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기에 설계가 용이하다. 개발도 단순하고, 코드 관리도 간편하다. 일단 개발이 단순하고 코드 관리가 간편하다는 것은 엄청난 장점이다. 하지만 서비스 운영중에 수정사항이 많아질 경우, 특정 서비스에서의 수정이 다른 서비스에 영향을 미쳐서 2개의 서비스가 모두 고장나버리는 사태가 발생할 수 있다. 또한 서비스가 점점 성장하면서 기능이 추가될수록 단순했던 서비스간의 관계도가 매우 복잡해 질 수 있다. 만약에 네이버웹툰, 네이버 증시, 네이버 메일, 네이버 페이 등의 서비스들이 모두 모놀리식 아키텍처로 한데 묶여있다고 가정해보자. 위 서비스들은 서로 관련이 전혀 없다고 볼 수 있다. 웹툰이 망가진다고 해서 네이버 메일을 못보내면 말이 안되는 것..

    MSA(MicroService Architecture)에 대한 내 생각 한 줌

    백엔드 개발에 관심이 있다면 한 번쯤은 들어봤을 MSA 백엔드에 대해서 공부할수록 느껴지는 게 있다. 프레임워크를 능숙히 사용하고, 코드를 우아하게 짜고, 새로운 신기술을 사용하는 것.. 모두 정말 중요하다고 생각한다. 나는 스프링, 장고 같은 프레임워크를 깊이 이해해서 요구사항을 빠르고 쉽게 해결하고 싶다. 불필요한 중복을 최소화하면서 객체지향적인 코드를 짜고 싶다. 새로운 신기술을 도입해서 기술적 역량을 확장시키고 싶다. 근데 위 3가지를 연습하면서도 최종적으로 바라봐야 할 '숲' 같은 존재는 인프라/아키텍쳐 부분이라고 생각한다. 같은 프로젝트를 수행하더라도 더 확장하기 쉽고, 변경이 쉬운 구조를 설계하는 사람이 되고 싶다. 그런 설계 방식 중 하나가 마이크로 서비스 아키텍처이다. 한 단계 더 깊이 ..