📝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) 즉, 소비자를 대상으로한 영업방식입니다
예를 들어서 일반인들이 사용하는 배달의민족, 네이버 포털와 같은 서비스 업들이 있습니다
🔗 참고 및 출처
마이크로서비스 아키텍처(MSA) 개념 소개 - CLIPSOFT
작성자 : 이응호 과장 마이크로서비스 아키텍처(MSA) 개념 소개 프리랜서로 일하고 있는 지인이 최근 구직을 하고 있었습니다. 그러면서 하는 말이 요즘 IT업계 구직시장에서 최고의 화두가 M
clipsoft.co.kr
https://medium.com/@magenta2127/monorepo-vs-multi-repo-vs-monolith-7c4a5f476009
'[CS 지식]' 카테고리의 다른 글
[CS 지식] VPS, 언리얼 엔진, 헥사, 커널, CGI (0) | 2022.10.27 |
---|---|
[CS 지식] 해시(Hash), SSL 인증서, SHA-256, RSA, AES, 해시(Hash)함수, 해시(Hash)값, 해싱(Hashing), 해시(Hash) 테이블, 솔트값(Salt) (0) | 2022.10.27 |
[CS 지식] 테크리드(Tech Lead), CTO (1) | 2022.10.20 |
[CS 지식] MIME타입, 싱글톤(SingleTon) 패턴, Chunk 지향 처리, APM, 메모리디비 (0) | 2022.09.27 |
[CS 지식] 검색엔진, 엘라스틱(Elastic), Solar, 검색엔진 동작 방식 (역인덱싱), BM25(TF, IDF) (0) | 2022.09.12 |