본문 바로가기

개발/Linux & DevOps

aws 초청강의 - msa가 필요한 이유

김도균
개발했던 경험들 위주, 실무적인 부분들 접목
1부 :what is msa, 조직도 어떻게 변해야할까
과거엔 끊임없이 변하면서 진화하듯이 (주택 -> 아파트)
SOA서비스 기반,
MSA 마이크로 서비스 기반

비즈니스 프로세스를 담은 시스템도 모듈/시스템 간 의존성이 발생함.
서버 1대 구매 약 한달 소요
로직이 프로시저에 있는 경우, 그리고 DBA가 퇴사함
lg 솔루션 상장, 다른 기능 막아버림 - 안좋은예
쿠팡 로켓와우 물류까지 다 해서 3개월 만에 다 해버림;
두가지 방식 : API , Event

그 서비스를 가장잘하는 프레임워크를 사용하는 것이 원칙.
언어가 달라질 수 있음.
스파크 스칼라 파이썬을 써서 시간 단축.
폴리글랏

신규 제품 time to market이 가능하다. 서비스가 작으니까.
msa 애자일 비즈니스 이 3개는 뗄 수 없다.
탄력성 : 스케일아웃, 트래픽이 늘었다 줄었다.
확장성 : 신규 서비스 붙이기, 빨리 찍어낼 수 있기.

api :
RESTful 똑같은 결과만을 받게 됨.
GraphQL 자기가 원하는 정보(스키마)를 보낼 수 있음. 이름과 주소만 원해. 그것만 줌. 구조적으로 보낼수도 있음.
gRPC HTTP통신. 기존의 이 통신은 커넥션 하나를 맺고 그거로 끝 이미지 5개면 5개의 커넥션. 얘는 커넥션 한개로 끝나고, 응답도 빠름.

event 방식:

다른 서비스를 위한 인터페이스 제공.
서비스는 자기의 데이터만 저장. 그 외엔 PK만 저장함.
CUD는 자체서버 에서만.

상태가 변하면 메시지 발행
이벤트 결과를 메시지로 발행
메시지는 도메인 격체 정보 포함
준실시간으로 처리.

루즈드 폴링

msa 는 코드나 디비 중복이 있을 수 있음.

상품 상태 너무 여러가지.
매번 상태 조회를 함.
디비 리소스 다 잡아먹음
해결: 판매가능한 상품만 따로 저장함.

CQRS 검색엔진의 원리와 유사.
각 서비스의 이벤트를 참조
데이터를 조합하여 문서화
고유 키와 인덱스 키로 액세스
빠른 데이터 조회

QUEUE

TOPIC 은 큐가 남아있고, 다른 서비스가 복사해갈 수 있음.
비즈니스 로직이 변경되면 메시지가 살ㅇ있어서 다시 처음부터 가져와서 처리 가능.
토픽 - 큐 형태로 이벤트 플로우 짬.

목적에 맞는 데이터페이스
AOP AOM 모델 어떤 프로퍼티도 다 끼워넣을 수 있게.
문제? 데이터가 너무 커짐. 조인 해야하는데 프로퍼티 테이블 찾고 키벨류 찾고 너무 느려짐.

NOSQL
의류 사이즈
컴퓨터 메모리

중앙 집중식 : 한 10년 쓸 생각으로 빵빵하게 설계. 여유로운 만큼 감가 상각 발생.
NULL 타입으로 채우기 꼼수 : 1억건 업데이트 2년 걸림.

MSA각자 DB를 갖게 됨
쿠팡 99퍼 MYSQL
동시 업데이트가 필요한 것은 같은 서비스이다.
메일은 10초 / 1분 뒤에 나가도 상관없다.
지연된 일관성. 약간의 시간차는 있어도 괜찮다.
롱텀 트랜잭션과 프로세스에 집중하라.

MSA패턴 : SAGA 패턴.
에러 발생을 바로 보내는 것은 좋은 패턴이 아니다.
리트라이 몇번이 필요함.

디스크 비용이 매우 싸졌음.
서비스가 많아지고, 데이터가 늘어나서, 이젠 분석에 더 치중하게 됨.

비즈니스 가치에 집중
코드 리팩토링 그런거 말고
비즈니스 조직과  긴밀하게 협업
IT BZNS 공통의 언어
적립금? 포인트? 적립금이라고 해라
유비쿼터스 랭귀지 (누구나 알아듣는)
DOMAIN DRIVEN DEVELOP
이벤트 스토밍 : 현업과 엔지니어 다 모이기
Strangler pattern 규모 자고 잘 안쓰는 모듈 먼저 떼어내기, 점진적 변화
버그 / 결함 다 있을 수 있다. 어느 단계에서 체킹이 가능하냐

코드리뷰 없이 머지 금지.
테스크 코드 없이 머지 금지.
테스트 실행 없이 머지 금지.
짝 프로그래밍?
SonarQube, SonarLint (Nullpoint Error 잡아줌)
팀장 부재시, 시니어 3명 동시 머지하면 머지 하도록

비즈니스 요구사항 충족 및 로직 점검
팀 전체에 비즈니스 로직 공유
더 좋은 알고리즘 있는지 검토
코딩 컨벤션 준수
코드 품질 향상 방안
문제 상황 발생시 누구나 대처 가능
직급이 아닌 코드로 말해요

블루그린 배포 (똑같이 생긴 서버 L4스위칭)
카나리 배포 (일부 트래픽을 stg로 흘려서 문제 없는지 확인하고 전체 트래픽 몰기)
람다 배포 함수형

여러 솔루션을 써라. 가급적 1등만 써라.
ㅁㅈㄴ

반응형