Replication 서버 운용
Replica는 많이 들어봤을 단어다. 쉽게 말하면 '모조품'인데
데이터베이스도 마스터 서버를 Replica하여 동일한 서버를 기능별로 분산하여
부하를 줄여주는 방법을 사용한다.
(내가 이전에 Git관련해서 Master가 Main으로 바뀐것 관련한 포스팅을 했는데
아직 여기선 Master와 Slave(레플리카)란 표현을 쓰더라;;)
이렇게 서버를 운용하는데는 크게 두 가지 목적이 있다
1. 데이터 안정성
물론 백업과 복구가 있지만, 장애 시간과 복구 시점 사이의 데이터들은 복구를 보장할 수 없다
그러나 이같은 레플리카 서버를 운용하면, 이같은 장애 상황시 손실이 최소화되는 장점이 있다
(사실상 Master서버에서 실시하는 작업을 레플리카에도 거의 그대로 실시하기 때문에)
2. 마스터 서버 부하 분산
CQRS패턴을 알고 있으면 이해가 쉽다
https://learn.microsoft.com/ko-kr/azure/architecture/patterns/cqrs
CQRS 패턴 - Azure Architecture Center
CQRS(명령과 쿼리의 역할 분리) 패턴을 사용하여 데이터를 업데이트하는 작업에서 데이터를 읽는 작업을 분리하는 방법을 알아봅니다.
learn.microsoft.com
애플리케이션 사용시, CRUD에서 제일 많이 쓰이는 부분은 아무래도 R부분이 절대 다수라고 할 수 있다.
예를들면, 나는 인스타그램 계정이 있다. 그런데 인스타그램 포스팅은 계정 생성 이후 딱 한번 해봤다.
대신에 다른 유저 계정에 들어가 구경하는거 용도로 사실상 인스타를 쓴다.
마스터 서버에서 쓰기,수정하기,삭제하기를 동작하게 해놓고, 단순한 Read의 경우 레플리카 서버를 만들어 거기서 관련 작업을 처리하면 훨씬 Master 서버에 부담이 덜 간다.
2. 캐시(Cache)
얼마 전 포스팅에서 깃허브 액션에서 사용하는 캐싱을 설명한 적이 있다
Cache dependency 로 워크플로우 효율적으로 실행하기 (tistory.com)
Cache dependency 로 워크플로우 효율적으로 실행하기
굳이 또 해야돼? 로부터 시작했다. 지금까지 깃헙 액션을 하면서 Test와 Build 양쪽 모두에 npm install 작업이 있었고, 해당 작업은 10초가량 걸렸다. 그런데 이 깃허브 액션이 무료 플랜이 있긴 하지
castellan.tistory.com
쉽게 말하면 많이 읽히는 데이터같은걸 캐싱해놓고, 추후 호출될 때
DB에 접근하지 않고 캐싱된 정보를 보내주는 개념이다.
다음과 같은 예를 들어보려 한다
해당 화면은 가상화폐 거래소 업비트의 공지사항이다.
해당 공지사항은, 업비트에 접속한 누구나 첫 화면에 뜨게 되고(조회수 높음), 내용이 실시간으로 바뀌지 않는다는 특징이 있다.
이런 사항을 캐싱해놓으면, 굳이 DB에 접근하지 않아도, 빠르고 안정적인 서비스 제공이
가능해진다
위 그림과 같이 WAS단에 캐시를 형성하는 것을 로컬 캐시라고 한다.
장점은 WAS단에서 바로 데이터를 제공하기때문에 매우 속도가 빠르다.
그러나 단점으로는, WAS가 여러개인 만큼, 데이터 일관성 측면에서 문제가 생길 수 있다는 것.
위와 같이 아예 캐시를 위해 별도의 저장소를 두는 것을
글로벌 캐시라고 부른다.
장점은 로컬 캐시의 반대로, 데이터 일관성이 유지된다는것.
그러나 단점은 네트워크 I/O가 발생한다는 것이다.
그림 출처
https://velog.io/@qotndus43/Cache
스프링부트 Caching 도입하기(Redis, Ehcache)
가져오는데 비용이 드는 데이터를 한번 가져온 뒤에는 복사본을 임시로 저장해둠으로써 애플리케이션 처리속도를 높이는 방식을 의미합니다.그렇다면 캐시는 언제 어디서 사용될까요?캐시는
velog.io
CDN (Content Delivery Network)
혹시 웹개발 처음 배울때, 부트스트랩 등을 설치하기 위해
head쪽이나, Javascript 부분에 엄청나게 긴 코드를 복붙하여 사용해본 사람이 있을 것이다.
보통 강사분들이 'XXX 하기 어려운 사람은 그냥 이거 CDN 복사붙여넣기 하세요~' 라고 할 것이다.
그게 라이브러리 CDN 주소이다.
좀 더 쉽게 얘기하면, 파이브 가이즈를 너무나 먹고 싶은 사람이 미국으로 가는 대신 강남역에 새로 생긴 파이브가이즈를 간다고 이해하면 되겠다.
미국에 가는 것보다 한국 강남역 가는게 당연히 물리적으로 훨씬 가깝다
내가 알기론 넷플릭스가 CDN을 이용해 각국의 콘텐츠를 세계로 서비스한다고 알고 있다.
미국 넷플 유저가 더 글로리를 감상하고 싶으면, 한국에 있는 서버에서 스트리밍하는게 아니라 미국에 있는 CDN으로 트래픽을 요청하는 방식인 것이다.
그외 JPA에서 발생하는 (멀티쓰레드) DB문제를 해결하기 위해
DB lock관련 문제도 다었으나 이건 추후에 내가 자스. JPA를 학습하고 포스팅하려고 한다.
'설계, 아키텍처 > Wanted 백엔드 프리온보딩 - 시스템 디자인 설계' 카테고리의 다른 글
원티드 백엔드 프리온보딩 - 시스템 디자인 설계 - 1 (1) | 2023.07.08 |
---|