반응형

📝GraphQL

 

GraphQL은 페이스북이 2012년에 개발하여 2015년에 공개적으로 발표된 데이터 질의어이다

REST API는 기능이 추가될 때 마다 호출해야할 HTTP URL이 많아지고 클라이언트의 코드가 점점 복잡해지고있고 이 부분을 해결하기 위해서 만들어졌다 → 간결한 형식의 요청으로 유지보수가 편해진다

Front End단에서 내가 원하는 데이터만 요청이 가능하기 때문에 효율적이지만 중간에 GraphQL에 대한 호출 형식을 정해줘야하기 때문에 API 유지관리자의 경우 GraphQL 스키마를 작성하기 위한 일을 해야한다

 

// 호출 방식
query {
  user(id: 1) {
    name
    address
  }
}
// 응답
{
  "data": {
    "person": {
      "name": "martin",
      "address" : "seoul
    }
  }
}

 

 

📝모놀리식 아키텍처 (Monolithic Architecture)

컴포넌트로 구분이 안 되어 있고 하나의 서비스로 돌아간다 그렇기 때문에 작은 수정에도 시스템 전체를 빌드해야하고 테스트 시간 또한 길어지고 하나의 서비스가 모든 서비스에 영향을 준다

예를 들어 이벤트 서비스가 추가될 때 트래픽이 몰려서 서버가 죽으면 다른 서비스도 마비가 된다

또한 하지만 시스템이 커지기 시작하고 여러 컴포넌트들이 더해지면 문제가 발생하게 된다

하지만 하나의 컴포넌트이기 때문에 여러 설정을 할 필요 없어서 작은 볼륨의 시스템 개발시에 매우 유용하다.

 

간단한 예제로는 네이버를 만들면 네이버에는 네이버 쇼핑, 검색, 지식 IN 등이 있는데 이거를 하나의 프로젝트에 넣어서 관리하는 형태이다

 

📝Micro Service Architecture (MSA)

기능별로 여러 컴포넌트들로 나눈 형태이다

타 컴포넌트와 의존성이 없기 때문에 서버가 하나 죽더라도 나머지 서비스는 작동하게 된다

트래픽이 가장 많은 서비스에 서버를 개별적으로 증설이 가능하기 때문에 비용적 측면에서도 이점이 있다.

→ Monolithic의 경우는 하나의 컴포넌트이기 때문에 어떤 서비스가 트래픽이 많아 그 부분만 증가시키려고 해도 똑같은 서버를 하나 더 증설하는 수밖에 없다 (만약 주문 서비스에 고성능의 서버 5대가 필요할 경우 MSA의 경우 주문 서비스 5대 분량의 서버만 증설하면 되지만 Monolithic의 경우 모든 서비스를 받쳐줄 수 있는 성능의 서버가 기본이 되고 추가적으로 필요한 성능을 더 추가하거나하면 어마무시하게 비싸지게 된다)

 

MSA에는 Multi-Repo와 Monorepo 방식이 존재한다

 

📝Multi-Repo

다중 저장소로 네이버로 치면 네이버쇼핑 프로젝트, 네이버 검색 프로젝트, 네이버 지식 IN 프로젝트가 따로 존재하는 것이다 이럴 경우 MSA조건에 합당하지만 서로간의 리소스(package.json, 공통 모듈 등)는 공유 할 수 없다

 

📝Monorepo

하나의 코드 베이스 내에서 여러 프로젝트를 관리한다 실제로 거대한 프로젝트가 있고 그 안에 여러개로 나눈 형태이다  물론 MSA처럼 개별적으로 돌아가고 Multi-Repo에서는 서로간의 리소스를 공유할 수 없지만 Monorepo는 거대한 프로젝트 안에서 리소스(package.json, 공통 모듈 등)를 공유할 수 있다

 

 

MSA가 유행하고 있지만 꼭 정답은 아니고 프로젝트 특성 및 현재 상황에 따라 적절한 아키텍처를 선택해야한다.

 

 

📝B2B 

B2B 영업은 기업 대 기업(Business to Business)의 약자로 기업 간의 거래를 위한 영업 방식입니다.

고객은 회사이고 상품 수량이 많습니다 (인력 포함)

예를 들어 기업이 사용할 솔루션을 개발해서 판매하거나 개발할 때 인력이 필요해 SI 인력을 보내는 것도 포함됩니다

 

📝B2C

B2C 영업은 기업 대 소비자(Business to Customer)  즉, 소비자를 대상으로한 영업방식입니다

예를 들어서 일반인들이 사용하는 배달의민족, 네이버 포털와 같은 서비스 업들이 있습니다

 

 

🔗 참고 및 출처

http://clipsoft.co.kr/wp/blog/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98msa-%EA%B0%9C%EB%85%90/

 

마이크로서비스 아키텍처(MSA) 개념 소개 - CLIPSOFT

작성자 : 이응호 과장   마이크로서비스 아키텍처(MSA) 개념 소개   프리랜서로 일하고 있는 지인이 최근 구직을 하고 있었습니다. 그러면서 하는 말이 요즘 IT업계 구직시장에서 최고의 화두가 M

clipsoft.co.kr

https://medium.com/@magenta2127/monorepo-vs-multi-repo-vs-monolith-7c4a5f476009

 

반응형