반응형

MSA란 무엇인가?

  • MSA

    • 하나의 서비스를 만들때 도메인별로 서비스를 쪼개어 독립적으로 서비스하고, 디플로이할 수 있도록 구성하는 아키텍쳐
    • 모놀리식(monolithic) 아키텍처와 대비되는 성격의 아키텍처이다.
    • 애플리케이션 로직을 각자 책임이 명확한 도메인별로 분리하여 이를 조합해 솔루션을 제공한다.
    • 각 컴포넌트(도메인)는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포된다. 마이크로 서비스는 비지니스 영역의 한 부분에서의 책임만을 담당하고, 여러 어플리케이션에서 재사용할 수 있어야한다.
    • 어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하기때문에 서비스 구현기술과 무관하다. 이는 한 서비스를 구축하할때 개발언어 및 기술에 종속되지 않고 다양한 언어와 기술을 사용할 수 있다는 장점이있다.
  • Monolithic

    • 모듈이 서비스 내부의 Product 현태로 종속되어있으며, 서비스에만 집중할 수 있는 구조
    • 장점
      • 개발 초기에는 단순한 아키텍처 구조와 개발의 용이함이 큰 잠점.
    • 단점
      • 규모가 커짐에따라 복잡도의 증가가 심해진다.
  • MSA의 장점

    • 각 도메인별로 서비스를 배포하고 운용하기때문에 결합도(coupling)이 낮아지는 장점이있다.
    • 배포가 유연하다.
    • 재사용성 및 확장성이 크다.
    • 서비스별 기술의 도입 및 확장이 자유롭다.
    • 하나의 서비스에 문제가생겨도 연관되지 않은 다른 도메인은 지속적으로 서비스가 가능하다.
  • MSA의 단점

    • 장애추적, 모니터링, 매시징이 어렵다(?? 이게 어렵나?)
    • 어려 도메인에 걸친 기능의 경우 트랙잭션을 다루기 어렵다.
    • 도매인간 의존성이 있는경우 릴리즈가 어렵다. <=> 도매인간 roll-out계획 마련 및 명확한 의존성 관리

** 참고 자료 https://waspro.tistory.com/429

반응형

레코드, 키의 정의 및 검색 트리

 트리에대한 알고리즘 공부에 앞서 트리에 대해 알아보는 시간을 가진다. 
대부분의 자료는 gmlwjd9405.github.io/2018/08/12/data-structure-tree.html 를 참조하였다. 알고리즘및 자료구조에관한 정리를 매우 잘 해놓은 블로그이니 참조하면 좋다.

레코드, 키의 정의 및 검색 트리

  • 레코드
    • 개체에대해 수집된 모든 정보를 포함하고있는 저장단위
  • 필드
    • 레코드에서 각각의 정보를 나타내는 부분
  • 검색키
    • 다른 레코드와 중복되지 않는 각 레코드를 대표하는 필드
    • 키는 하나의 필드로 이루어질 수 도 있고 두개 이상의 필드로 이루어질 수 도 있다. 
  • 검색트리
    • 각 노드가 규칙에 맞도록 하나씩의 키를 가지고있다. 
    • 이 키를 이용해 해당 레코드가 자정된 위치를 알 수 있다.  

TREE 자료구조의 특징

  • TREE는 노드로 이루어진 자료구조이다.
    • 트리는 하나의 루트 노드를 가진다.
    • 루트노드는 0개 이상의 자식 노드를 가진다. 
    • 그 자식노드도 0개이상의 자식 노드를 가진다. 
  • 트리는 노드(node)와 그 노드들을 연결하는 간선(edge)으로 이루어져있다. 
    • 트리의 노드 사이에는 CYCLE(순환)이 없다. 
    • 노드 사이엔 특정 순서가 있을수도 있고 없을수도있다. 
    • 각 노드는 부모도드로 연결이 있을수도있고 없을수도있다. 
    • 각 노드는 어떤 자료형으로도 표현이 가능하다. 
  • 비 선형 자료구조이고계층적 관계를 표현한다.
    • 주어진 배열에서 최솟값을 찾는다.
    • 그 값을 맨앞의 값과 교체한다.
    • 맨처음 위치를 뺀 나머지 리스트를 같은 방법으로 교채한다.
    • 하나의 원소만 남을때까지 위의 과정을 반복한다.
  • 그래프의 한 종류이다. 
    • 사이클이 없는 연결그래프이다. 
    • DAG(Directed Acyclic Graph, 방향성이 있는 비순환그래프)의 한종류이다. 

 

TREE 와 연관된 용어

  • 루트(root)노드: 부모가 없는 노드. 트리는ㄴ 하나의 루트노드만 가진다. 
  • 단말(leaf)노드: 자식이 없는 노드.
  • 내부(internal)노드: 루트도, 단말도 아닌 노드(부모와 자식이 있는 노드)
  • 간선(edge): 노드들을 연결하는선. link, branch라고도 부른다. 
  • 형제(sibling)노드: 같은 부모를 가지는 노드 
  • 노드의 크기: 자신을 포함한 모든 자손 노드의 수
  • 노드의 깊이(depth): 루트에서 특정 노드에 도달하기위해 거쳐야하는 간선의수
  • 노드의 레벨(level): 루트에서 어떤 노드에 도달하기 위해 거처야하는 간선의 수 
  • 노드의 차수(degree): 하위 트리의 개수 / 간선 수 degree = 각 노느가 가진 가지의 수
  • 트리의 타수(degree of tree): 트리의 최대 차수
  • 트리의 높이(height): 루트에서 부터 가장 깊숙히 있는 노드의 깊이.

이미지 출처 https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html

TREE 의 종류

  • 이진트리(Binary Tree)
    • 각노드가 최대 두개의 자식을 가질 수 있다.
    • 모든 트리가 이진트리는 아니다. 
    • 중위(in-order), 전위(pre-order), 후위(post-order)순회가 가능
  • 이진 탐색트리
    • 모든 노드가 특정 순서를 따르는 속성이 있는 트리
    • 모든 외쪽 자식들 < 부모 < 오른쪽자식들의 순서를 가지고있는다.

 

이외의 균형/비균형, 전이진/완전이진/포화이진 트리 및  힙 트라이 같은 파생형은 출처에서 공부하면좋다. 

gmlwjd9405.github.io/2018/08/12/data-structure-tree.html

 

[자료구조] 트리(Tree)란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

알고리즘을 공부하기위해 특징을 리마인드하기위한 포스팅이라서 구현방법같은 자료구조 영역은 생략한다. 자세한 사항은 출처를 확인하면 좋다. 

반응형

'프로그래밍 > 알고리즘' 카테고리의 다른 글

삽입정렬Insertion Sort  (0) 2020.12.27
버블 정렬Bubble Sort  (0) 2020.12.26
선택 정렬Selection Sort  (0) 2020.12.22
앞으로 공부할 알고리즘  (0) 2020.12.22

+ Recent posts