인프라/대규모 서비스를 지탱하는 기술

    대규모 서비스를 지탱하는 기술, 9강 IO 부하를 줄이는 방법 요약

    대규모 서비스를 지탱하는 기술, 9강 IO 부하를 줄이는 방법 요약 캐시를 전제로 I/O 부하 줄이기 데이터 규모에 비해 물리 메모리가 크면 캐시를 통해 전체 데이터를 메모리에 올려둘 수 있기 때문에 이를 고려해야 한다. 일반적인 케이스에 캐시로 올리지 못하더라도 압축 알고리즘을 이용해 올릴 수 있는 경우도 있으니 이를 조사해보는 것도 좋다. 실무에서는 메모리의 가격도 큰 의사결정 요소가 되기 때문에 소프트웨어 개선과 하드웨어 구매 중 어느 것이 싸게 먹히는지 생각해보아야 한다. 복수 서버로 확장시키기 데이터를 전부 캐싱할 수 없는 규모에서 사용하기 적합하다. AP 서버를 늘리는 건 정말 쉽다. DB 서버는 늘리려면 고려할 사항이 많다. 테이블 단위로 각각 다른 DB 서버로 나누는 등의 방식을 사용할 수..

    대규모 서비스를 지탱하는 기술, 8강 OS의 캐시 구조 요약

    대규모 서비스를 지탱하는 기술, 8강 OS의 캐시 구조 요약 OS 캐시 구조 알고 애플리케이션 작성하기 OS 의 캐시 구조를 이해하고 디스크 액세스를 최소화하면 프로그램을 빠르게 만들 수 있다 디스크와 메모리 간 속도 차는 10^5 에서 10^6 배 이상이다 캐시 구조를 이해하면 최대한 메모리에 올릴 수 있다 메모리를 이용해 디스크 액세스를 줄일 수 있다. (OS 캐시) 가상 메모리 논리적인 선형 주소를 물리적인 물리 주소로 변환하는 것이다 프로세스는 가상 메모리의 물리 주소를 통해 메모리에 접근한다 프로세스는 특정 번지부터 시작한다는 식의 상대 주소로 메모리에 접근한다 OS 는 커널 내에서 메모리를 추상화하고 이것을 가상 메모리라고 한다 OS 는 메모리를 1 바이트씩 액세스하는 것이 아니라 4바이트 정..

    대규모 서비스를 지탱하는 기술, 7강 대규모 데이터를 다루기 위한 기초 지식 요약

    대규모 서비스를 지탱하는 기술, 7강 대규모 데이터를 다루기 위한 기초 지식 요약 프로그램을 작성할 때의 요령 어떻게 하면 메모리에서 처리를 마칠 수 있을까 생각해보기 디스크 seek 횟수를 최소화해보자. 데이터량 증가에 강한 알고리즘 사용 선형 탐색 말고 이분 검색 같은 알고리즘을 사용하면 데이터 양이 기하급수적으로 증가해도 실제 연산 양이 많이 늘지 않는다. 데이터 압축, 검색기술과 같은 테크닉 이용하기 압축해서 데이터량을 줄이거나 검색엔진을 이용하자 대규모 데이터를 다루기 위한 전제 지식 OS 캐시 분산을 고려한 RDBMS 운용 알고리즘 데이터 구조 CPU 사용률, I/O 대기율 확인하기 리눅스에서 sar 명령어로 가능 윈도우즈에서 Performance Monitor, Resource Monitor..

    대규모 서비스를 지탱하는 기술, 6강 규모 조정의 요소 요약

    대규모 서비스를 지탱하는 기술, 6강 규모 조정의 요소 요약 스케일 업과 스케일 아웃 전략 스케일 업보다는 스케일 아웃이 주류 하드웨어 가격 차이가 아주 많이 난다. 시스템 구성에 유연성이 크다. CPU 부하와 I/O 부하 데이터와 관련된 작업 ex.DB 에 질의하는 부분 등을 빼면 나머지는 CPU 부하 데이터 작업을 수행하는 경우 DB 서버 측면에서는 I/O 부하 애플리케이션에 걸리는 부하는 단순히 애플리케이션 서버를 더 늘리고 로드밸런서로 부하 분산을 해주면 됨 DB 에 걸리는 I/O 부하는 단순하지 않음 DB 를 여러개 클러스터링해서 사용하려면 DB 에 있는 데이터 쓰기 내역을 매번 동기화해줘야 함 정리 CPU 부하의 규모 조정은 간단하다. 서버를 늘리고 로드 밸런서로 분산 웹, AP 서버, 크롤러..

    대규모 서비스를 지탱하는 기술, 5강 대규모 데이터 처리의 어려운 점 요약

    대규모 서비스를 지탱하는 기술, 5강 대규모 데이터 처리의 어려운 점 요약 디스크는 왜 메모리보다 느린가 물리적인 장치를 통해 데이터를 찾아나간다. 원반을 돌리거나 디스크 헤드를 이동시켜서 데이터를 찾아낸다. 메모리는 전기적 신호를 사용한다. SSD 는 이전의 디스크 역할을 하지만 전기적 신호를 이용하는 디스크이다. 메모리와 디스크의 전송 속도는 100배 이상 차이가 난다. 메모리 7.5GB/s 디스크 58MB/s (2008년에 발간된 책이라 현재는 어떨지 잘 모르겠다.) OS 레벨에서의 해결책 자주 같이 쓰이는 데이터를 몰아놓는다. 한번 읽을 때 4KB 정도의 주변 데이터를 같이 읽는다. 단일 호스트 부하 개선 팁 단일 서버의 성능을 최대한 끌어내야 복수 서버에서의 부하 분산이 의미를 갖는다. 추측하지..

    대규모 서비스를 지탱하는 기술, 4강 대규모 데이터란 요약

    대규모 서비스를 지탱하는 기술, 4강 대규모 데이터란 요약 대규모 데이터 환경에 대한 이해 대규모 데이터의 크기는 어느정도인가? 대규모 데이터 처리는 왜 오래 걸리는가? 애플리케이션과 대규모 데이터의 부하 관계는 어떻게 되는가? DB 에서 대규모 데이터란? 수백 GB 이상의 데이터만 축적돼도 기본적인 select 쿼리가 동작하지 않는다. 규모에 따라 수백 GB, TB, PB 가 될 수 있다. 대규모 데이터 처리는 왜 어려운가 메모리 내에서 계산할 수 없다. 많은 양의 데이터를 디스크에서 찾아 메모리에 올렸다 내렸다하며 데이터를 처리해나가야 한다. I/O 에 많은 시간이 소비된다. 메모리는 디스크보다 대략 10만~100만배 정도 빠르다.

    대규모 서비스를 지탱하는 기술, 3강 서비스 개발의 현장 요약

    대규모 서비스를 지탱하는 기술, 3강 서비스 개발의 현장 요약 개발 팀을 나누는 방식 서비스 개발부 서비스 구현 및 애플리케이션 측면 개선 애플리케이션 코드로 부하 개선이 가능한 경우 인프라부와 협업 인프라부 서버/인프라 시스템의 운용을 담당하는 팀 서버 준비, 데이터 센터 운용, 부하 분산 등을 담당 부하 상황 등 모니터링 커뮤니케이션 그룹웨어 이용 되도록 공유가 되지 않는 개인 이메일 사용하지 않음 위키에 자료를 남김 IRC 사내 메신저로 이용 시스템 알람용으로도 사용 장애 통지 서버 관리 도구 현대의 뉴렐릭과 비슷한 서비스 같음 실무 서비스 개발 아침 스크럼, 진척 상황, 할 일 공유 아침 미팅에서 기능 구현 태스크 담당자를 정함 기능 구현 시 가능한 테스트 코드 작성 가능한 -> 타협 가능하다는 ..

    대규모 서비스를 지탱하는 기술, 2강 계속 성장하는 서비스와 대규모화의 벽 요약

    대규모 서비스를 지탱하는 기술, 2강 계속 성장하는 서비스와 대규모화의 벽 요약 웹 서비스의 어려움 트래픽이 점점 증가 다중화, 부하분산을 적용 시스템 규모 확장 1차 라우터 도입 HTTP 요청 부하 분산 apache mod_rewrite 로드 밸런서보다 훨씬 적은 기능을 가지고 있음 단순 URL 리다이렉팅만 가능 DB 분산 MySQL 레플리케이션 2차 LVS (Linux Virtual Server) 로드 밸런싱 기능 Keepalived 서버의 헬스체크를 하고 unhealthy 서버가 있는 경우 healthy 쪽으로 트래픽을 돌려줌 서버 정보 관리 시스템도 개발 각 서버에 받고 있는 부하, 서버의 용도 등을 쉽게 관리 가능해짐

    대규모 서비스를 지탱하는 기술, 1강 대규모 서비스와 소규모 서비스 요약

    대규모 서비스를 지탱하는 기술, 1강 대규모 서비스와 소규모 서비스 요약 개요 하테나라는 기업의 인턴십 내용 대규모 서비스 개발 경험 대규모 서비스는 특성을 파악하지 못하고 어중간하게 구현하면 장애 잘남 선배가 2주간 강의 책에서 설명하는 것 대규모 웹개발, 사고방식 OS, DB, 알고리즘, 자료구조 선택 중요성 RDBMS 의 한계 파악 검색엔진 만들어봄 서버/인프라의 예와 개념 프로그래밍 코드 같은 세부사항 외에 전체적 그림을 배움 장별 설명 2장 대규모란 어느정도 3장 OS 캐시 4장 MySQL 대규모 서비스에서 갖는 문제 5장 애플리케이션단 핵심 내용 6장 압축기법 7장 알고리즘 8장 키워드 9, 10장 검색엔진 개발 RDBMS 에서 다룰 수 없는 데이터 규모 다루기 11~15장 인프라 구성 등 설..

반응형