[BE] 서버 배포

지니🧸·2023년 9월 12일
0

GDSC

목록 보기
7/12

새로 오신 백엔드 파트장님의 첫 T19 열심히 들었습니당

서버 배포 전략

차이: 서비스가 중단되는지 여부

  • 중단 배포
  • 무중단 배포
    • Blue/Green
    • Rolling
    • Canary

로드 밸런서가 무중단 배포의 핵심이다. 애초에 무중단 배포가 가능한 것도 로드 밸런서 덕분

Blue/Green 배포

Blue 서버: 이전 서버
Green 서버: 새로운 서버


[이미지 출처]

  • 빠른 롤백 가능
  • 비싼 비용
  • 잘 쓰이지 않음

Rolling 배포


[이미지 출처]

  • 구버전과 신버전이 공존
  • 추가적인 비용이 들지 않음
  • 간편한 관리
  • 점진적으로 배포해서 더 안정적일 수도 있다

Canary 배포


[이미지 출처]

  • 소수의 유저만 신버전으로 라우팅
  • 단계별 모니터링 가능
  • 오류가 있어도 소수에게만 영향

문제는 거의 항상 DB다

  • DB는 공유되는 자원이다
    • 정합성이 매우 중요하다
    • replication은 가능
  • 하위 호환성이 매우 중요하다
    • DROP TABLE, COLUMN
    • DELETE ROW
    • 등의 작업 모두 하위 호환성 때문에 막힐 수 있어서 잘 사용하지 않는다

가능한 서버 장애 원인

  • 오래 걸리는 DDL (Database Definition Language)
    • 컬럼 이름 변경, FK 추가, Index 추가
      - index 추가: 존재하는 데이터를 모두 정렬하여 저장해야 하는 복잡한 과정
    • Online DDL
    • Metadata Lock
  • 하위 호환성이 안맞는 경우
    • Client-server간 protocol에서 parameter 삭제
    • ORM을 사용하는데 drop column하는 db schema 변경이 먼저 일어났을 때

Feature Flag

  • Deployment != Rollout (Release)
    • 배포와 출시는 다르다
    • 배포는 환경에 코드를 실행하는 것이고,
    • 출시는 실제로 기능을 사용자에게 내보이는 것이다
  • Soft Rollout을 위한 도구
  • 특정 기능을 껐다 켰다 할 수 있다
  • 서버 배포와 프론트 배포의 주기가 맞지 않을 때 사용하기도 한다
  • 플래그가 켜져 있을 때와 꺼져 있을 때 모두 테스트 해봐야 한다
profile
우당탕탕

0개의 댓글