대규모 서비스를 지탱하는 기술, 1강 대규모 서비스와 소규모 서비스 요약
개요
- 하테나라는 기업의 인턴십 내용
- 대규모 서비스 개발 경험
- 대규모 서비스는 특성을 파악하지 못하고 어중간하게 구현하면 장애 잘남
- 선배가 2주간 강의
책에서 설명하는 것
- 대규모 웹개발, 사고방식
- OS, DB, 알고리즘, 자료구조 선택 중요성
- RDBMS 의 한계 파악 검색엔진 만들어봄
- 서버/인프라의 예와 개념
- 프로그래밍 코드 같은 세부사항 외에 전체적 그림을 배움
장별 설명
- 2장 대규모란 어느정도
- 3장 OS 캐시
- 4장 MySQL 대규모 서비스에서 갖는 문제
- 5장 애플리케이션단 핵심 내용
- 6장 압축기법
- 7장 알고리즘
- 8장 키워드
- 9, 10장 검색엔진 개발
- RDBMS 에서 다룰 수 없는 데이터 규모 다루기
- 11~15장 인프라 구성 등
설명하지 않는 것
- 애플리케이션 프레임워크나 ORM에 관련된 지식
- 구성정보 설정 방법 (Configuration)
- 프로그래밍 언어 관련 지식
- 알고리즘이나 자료구조에 대한 세세한 설명
- 기술 이외의 것들
하테나 서비스 규모
- 등록 사용자 100만
- 블로그 글 쓰는 사람
- 월간 1500만 고유 사용자
- 블로그 접속하는 방문자
- 월 수십억 엑세스
- 피크 시 회선 트래픽 양 430Mbps
- 서버 500대 이상
- 온프레미스 구성
- 매일 로그 GB 이상 쌓임
- DB 서버도 테라바이트 저장
대규모 서비스 기준
- 서버 100대~수천대가 대규모 서비스 기준이라고 생각
- 회선 트래픽 양도 중요하다.
- 미디어 기반으로 서비스하는 곳과 텍스트 위주로 서비스하는 곳이 차이가 큼
소규모와 대규모 차이
확장성과 부하분산 필요
- 스케일 업과 스케일 아웃 전략을 잘 고려해봐야 함
- 스케일 업 한계 있음, 스케일 아웃 필요
- 스케일 아웃 때문에 다양한 문제가 발생됨
- 모든 서버가 클러스터링되어 균일한 서비스를 제공해야 하는 과제가 있음
- 로드 밸런싱으로 요청 분리 필요
- 모든 서버에서 같은 데이터를 서빙할 수 있도록 데이터 동기화 필요
- 네트워크 지연
다중성 확보
- 이중화
- 장애 극복 시스템 필요
- 대규모 서비스는 일단 중지되면 사회적 충격까지 있음
- ex) 카카오, 야후
- 911테러 때 야후 정지 -> 타사이트 CDN 에 캐싱해 트래픽 우회
효율적 운용 필요
- 모니터링 등
- 뉴렐릭
- 회사에서 사용하는 솔루션
- 부하 관리 도구
- 디스크 사용량 등
- 인프라는 메가존에 위임하여 슬랙 알람 걸어둠
- 보안 설정이 적절한지
- SK 인포섹 업체를 이용 중
대규모일 땐 개발 방식 변화 필요
- 개발자가 너무 많아서 표준 정하고 가야 함
- 라이브러리
- 프레임워크
- 코딩 컨벤션
- 버전 관리 도구
- 새로운 도구를 도입할 때의 교육
대규모 데이터 대처 필요
- 디스크 -> 메모리 -> 캐시메모리 -> CPU
- 속도가 달라서 이 사이 병목 있음.
- 보통 캐싱을 통해 해결함
- 디스크의 데이터는 읽히는 속도가 느리기 때문에 자주 사용되는 항목을 캐시메모리 위로 올림
- 대규모에선 데이터 양 자체가 커지므로 캐시미스가 많이 나게 됨
- 이로 인해 생기는 디스크 I/O 부하 해결 필요
반응형
'인프라 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
대규모 서비스를 지탱하는 기술, 6강 규모 조정의 요소 요약 (0) | 2023.06.23 |
---|---|
대규모 서비스를 지탱하는 기술, 5강 대규모 데이터 처리의 어려운 점 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 4강 대규모 데이터란 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 3강 서비스 개발의 현장 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 2강 계속 성장하는 서비스와 대규모화의 벽 요약 (0) | 2023.06.23 |