본문 바로가기

IT 살이/03. 관리 - 성능 관리

책상정리 #1-대용량 아키텍처와 성능 튜닝

봐야 겠다고 생각되는 책들이 있으면 보이는 곳에 둬야 잊혀지지 않을 것 같아 눈앞에 쌓아두는 스타일이다. 





책들이 늘어나자 공간을 차지하고 있는 것이 답답했던지 정리 좀 하자고 한다. 책꽂이로 돌아가면 왠지 살아있는 녀석들이 박제가 되어 버릴 것만 같은 기분이 들어서 한번씩 쓰다듬어 주고 보내려고 한다. 

첫번째 책으로 요즘 시간되면 읽고 있는 책이다.


마이크로소프트 플랫폼에서 주로 일을 해 왔기때문에 JAVA 진영의 책을 선뜻 집어들기는 힘들었었다. 근데 개발을 전문으로 할때도 디자인 패턴등을 보면 JAVA쪽이 훨씬 잘 되어 있다는 것을 느끼고는 있었지만. 아키텍처에서도 그런 느낌이다. 요즘은 하는일도 그렇고 아키텍처에 관심을 갖다 보니 이 수준에서는 JAVA 진영이 훨씬 잘 정리가 되어 있다는 것을 재삼 느끼게 된다. 

기존의 이론적이고 방법론 관점에서의 추상적인 설명 대신에 저자가 말한대로 실용적이고 현재 유행하는 아키텍처 스타일을 정리해서 그런지 피부에 와 닿는 내용들이서 좋다.


조대협의 서버 사이드 대용량 아키텍처와 성능 튜닝


Part 01 아키텍처 설계 방법

   Chapter 01 소프트웨어 아키텍처의 설계

      1. 아키텍처란 무엇인가?

      2. 아키텍처 설계 프로세스

      3. 비즈니스 아키텍처 설계

         3.1 서비스 개요

         3.2 시장 현황 분석[선택사항]

         3.3 주요 기능 정의

         3.4 도메인 모델

         3.5 전체 아키텍처

         3.6 비즈니스 로드맵

      4. 아키텍처 설계 원칙의 정의

      5. 시스템 아키텍처 설계

         5.1 애플리케이션 아키텍처 설계

         5.2 테크니컬 아키텍처

         5.3 데이터 아키텍처

         * 애자일에 문서화가 필요한가?

      6. 아키텍처 결정 프로세스

         6.1 아키텍처 결정 프로세스 정의

         6.2 AD 템플릿

      7. 효과적인 아키텍트의 역할과 종류

         7.1 아키텍트 역할

         7.2 아키텍트의 종류

         * 인도네시아 컨설팅을 다녀와서

Part 02 레퍼런스 아키텍처

   Chapter 02 SOA

      1. SOA의 기본 개념

      2. SOA에서 서비스의 정의

         2.1 서비스의 구성

         2.2 서비스의 특징

         2.3 서비스의 종류 

      3. SOA 아키텍처 모델

         3.1 Fundamental SOA( 펀더멘털 SOA)[통합]

         3.2 Networked SOA(네트워크 SOA) [유연성과 통제 추가]

         3.3 Process Oriented SOA(프로세스 지향 SOA)[민첩성의 추가]   

      4. SOA 아키텍처 모델의 구현

      5. SOA 수행 방법론

         5.1 기업의 전략

         5.2 비용의 집행

         5.3 제어와 통제

         5.4 프로젝트 관리

         5.5 SOA 아키텍처 요약

   Chapter 03 마이크로 서비스 아키텍처

      1. 모노리틱 아키텍처

         1.1 문제점

      2. 마이크로 서비스 아키텍처

         2.1 아키텍처 구조

      3. 마이크로 서비스 아키텍처의 문제점

         3.1 성능

         3.2 메모리

         3.3 테이스팅 더 어려움

         3.4 운영 관점의 문제

         3.5 서비스 간 트랜잭션 처리

      4. 거버넌스 모델

         4.1 Cross Functional Team

         4.2 You build, You run - DevOps

         4.3 Project vs. Product

         4.4 Self-organized Team

         4.5 Alignment

      5. 진화형 모델(Evolutionary Model )

      6. SOA와 비교

      * Domain Driven Development : Modeling

      [칼럼] DevOps

         1. 기존 개발 체계의 문제점

         2. 그러면 해결책은?

         3. 이 좋은 개념을 왜 이제야?

         4. DevOps

   Chapter 04 REST의 이해와 설계

      1. REST의 기본

         1.1 HTTP 메소드

         1.2 REST의 리소스

         1.3 REST의 특성

         1.4 REST 안티 패턴

      2. REST API 디자인 가이드

         2.1 REST URI는 단순하고 직관적으로 만들자

         2.2 리소스 간의 관계를 표현하는 방법

         2.3 에러 처리

         2.4 API 버전 관리

         2.5 페이징

         2.6 부분 응답 처리

         2.7 검색(전역검색과 지역검색)

         2.8 HATEOS를 이용한 링크 처리

         2.9 단일 API 엔드포인트 활용

      * 인터넷의 정보 유통 구조의 변화      

      3. REST의 문제점

      4. REST API 보안

         4.1 REST API 보안 관점

         4.2 인증

         4.3 권한 인가

         4.4 자비스크립트 클라이언트 지원

      * 뉴타입을 요구하는 클라우드, 오픈소스 그리고 빅데이터

   Chapter 05 대용량 실시간 데이터 처리를 위한 람다 아키텍처

      1. 람다 아키텍처란?

         1.1 문제의 정의

         1.2 배치 활용

         1.3 실시간 집계 테이블의 활용

      2. 람다 아키텍처 활용

      3. 람다 아키텍처의 재구성

         3.1 RDBMS를 활용한 유연성 증대 방안

         3.2 데이터 분석 도구를 이용한 새로운 분석 모델 개발

      * 빅데이터 팀을 이루는 데 필요한 3가지

Part 03 대용량 아키텍처

   Chapter 06 대용량 서비스 레퍼런스 아키텍처

      1. 시스템 구조

      2. Access Layer

         2.1 웹 캐시

         2.2 Reverse Proxy

         2.3 API Gateway[선택 사항]

         2.4 계정관리

         2.5 시스템 연동

      3. Business Layer

         3.1 동기 요청 처리

         3.2 데이터 그리드를 이용한 상태 정보 저장소

         3.3 메시지 큐를 이용한 비동기 요청 처리

         3.4 임시 파일 작업 공간

         3.5 메시징 프로토콜

      * 요즘 잘나가는 SNS 서비스들의 기술적인 특징

      4. Persistent Layer

         4.1 RDBMS

         4.2 파일 시스템

         4.3 NoSQL

      5. Analysis Layer

         5.1 전통적인 OLAP 방식의 분석 시스템

         5.2 Map & Reduce기반의 분석 시스템

         5.3 Map & Reduce + OLAP 형태의 데이터 분석 시스템

         5.4 실시간 분석 시스템

      6. OAM Layer

         6.1 CMDB( Configuration Management DB)

         6.2 모니터링

         6.3 로그 파일

         6.4 Configuration 관리

      7. 클라우드 인프라

         7.1 클라우드 컴퓨팅의 배포 모델에 따른 분류

         7.2 클라우드 컴퓨팅의 서비스 단계에 따른 분류

         7.3 클라우드 컴퓨팅의 장단점

      8. 글로벌 서비스 아키텍처

         8.1 법적인 이슈에 대한 검토

         8.2 시스템 위치 선정

         8.3 운영에 관련된 고려사항

         8.4 기술적인 고려사항

      * 아키텍트에 대해서

   Chapter 07 NoSQL

      1. NoSQL의 등장 배경

      2. NoSQL의 특징

      3. CAP 이론

      4. NoSQL의 분류

         4.1 Key/Value Store

         4.2 Ordered Key/Value Store

         4.3 Document Key/Value Store

      5. NoSQL 제품별 선호도

      6. NoSQL과 기존 RDBMS와의 차이

      7. NoSQL 사용시 주의할 점

      8. NoSQL 데이터 모델링

         8.1 NoSQL디자인 패턴

         8.2 NoSQL과 RDBMS의 데이터 모델링 차이

         8.3 NoSQL 데이터 모델링 패턴

         8.4 NoSQL 데이터 모델링 절차

      * 외국 컨설턴트와 한국 컨설턴트

Part 04

   Chapter 08 엔지니어링의 정의와 범위

      1. 성능 엔지니어링은 언제 해야 하는가?

      2. 시스템 용량 산정

      3. 성능 엔지니어링의 절차

         3.1 목표와 모델의 정의

         3.2 부하 생성

         3.3 테스트와 모니터링

         3.4 튜닝

         3.5 반복

      4. 성능 엔지니어링을 위해 필요한 것들

   Chapter 09 JVM과 톰캣 튜닝

      1. JVM 튜닝

         1.1 GC란 무엇인가?

         1.2 GC의 동작 방법은 어떻게 되는가?

      2. 톰캣 튜닝

         2.1 가정

         2.2 Listener 설정

         2.3 Connector 설정

         2.4 JVM 튜닝

         2.5 메모리 옵션

   Chapter 10 애플리케이션 서버의 병목 발견 방법

      1. Hang up과 Slow down 현상의 정의

      2. 애플리케이션 서버와 User AP에서의 Slow down 분석

         2.1 애플리케이션 서버의 기본 구조

         2.2 스레드 덤프를 통한 애플리케이션 서버의 병목 구간 분석

      * 업그레이드된 개발자 되기

'IT 살이 > 03. 관리 - 성능 관리' 카테고리의 다른 글

성능관리 전략  (0) 2015.11.11
성능 튜닝 프로세스 개념도  (0) 2015.09.08