http://www.slideshare.net/C0deKhan/scaling-out-tier-based-applications
별로 알맹이가 없구만.. 그만 해야지.
티어 기반 어플리케이션을 Space Based Architecture를 사용해서 확장성 있는 서비스로 바꾸는 방법.
- 분산 캐싱
- 병렬 프로세싱
- 가상화
- 동적 프로비저닝
Scale-out
동적 풀에 머신을 추가하고 동일한 어플리케이션을 여러개 돌려서 확장하는 방법
Scale-up
단일 머신의 파워를 끌어올려서 확장하는 방법
Linear scalability
전체 처리량 = 처리 유닛 수 x 단위 당 처리량, 선형 증가 가능
Dynamic scalability
프로비저닝과 모니터링 기능일 이용하여 동적으로 확장 가능
제일 이상적인 경우 -> 한 번 쓰고 모든 곳에서 사용
- 시간 단축 : 캐싱, 병렬 처리
- 비용 절감 : 흔한 리소스를 풀링해서 사용, 이용률 극대화
그러나 현실은 : 미들웨어가 병목 - 데이터와 비즈니스 로직 계층 사이..
문제 - 티어 기반 접근 방식
- 중앙 집중식 아키텍처의 병렬화
- 파트가 너무 많을 때는 어떻게 확장해야 되나
- 일관성 : 각 티어별로 HA 구성하고 일관성 맞추려면 되면 매우 복잡해짐
- 직렬화 추가 비용 : 서브 컴포넌트 간 통신 오버헤드 증가
- 수직 확장 vs 수평 확장 : 코드 안 바꾸고 수직, 수평 모델을 조합해서 쓰는 방법은 없나
- 동적인 확장 : 어플리케이션의 지원 필요 - 외부에서 생명 주기 관리를 가능하게 해야 하므로
티어를 확장 가능한 가상 서비스로 전환
- 트랜잭션 간 FIFO 유지해서 병렬 실행
- 논리적 처리 단위로 각 티어를 병합해서 직렬화 부담을 제거
- 그럼 이거 할 때 무슨 기술을 쓸건데?
Space Based Architecture (SBA)
- Write : 데이터 객체 쓰기
- Read : 데이터 객체 사본 가져오기
- Take : 데이터 객체 읽고 삭제
- Notify : 데이터 갱신 시 이벤트 생성
- 분산 서비스에 필요한 가상화 미들웨어를 제공
* 데이터 캐싱
* 로드 밸런싱
* 메시징
* 병렬 처리
- 단일한 모델, 기술, 런타임 환경
Space 기반 미들웨어 가상화
- JDBC, JMS, JCache, Space 등 인터페이스를 통해 클러스터 된 Space를 사용
- 같은 데이터가 다른 인터페이스를 통해 보일 수 있음
- 확장성 관리에는 단일 런타임, 여러 시스템에 복제
- 관리 부담과 개발 복잡도 감소
- 현재 존재하는 어플리케이션에 그리드 기능을 제공
컨테이너의 가상화를 통한 동적 확장성
기존 JavaEE 플랫폼 기반에서도 그대로 사용할 수 있는가?
- JCA와 세션 빈을 추상화/통합 계층으로 사용
- 가상 미들웨어 구현을 통해 JavaEE 플랫폼 확장
- 분산 캐싱, 병렬 처리, 메시징 버스
별로 알맹이가 없구만.. 그만 해야지.
티어 기반 어플리케이션을 Space Based Architecture를 사용해서 확장성 있는 서비스로 바꾸는 방법.
- 분산 캐싱
- 병렬 프로세싱
- 가상화
- 동적 프로비저닝
Scale-out
동적 풀에 머신을 추가하고 동일한 어플리케이션을 여러개 돌려서 확장하는 방법
Scale-up
단일 머신의 파워를 끌어올려서 확장하는 방법
Linear scalability
전체 처리량 = 처리 유닛 수 x 단위 당 처리량, 선형 증가 가능
Dynamic scalability
프로비저닝과 모니터링 기능일 이용하여 동적으로 확장 가능
제일 이상적인 경우 -> 한 번 쓰고 모든 곳에서 사용
- 시간 단축 : 캐싱, 병렬 처리
- 비용 절감 : 흔한 리소스를 풀링해서 사용, 이용률 극대화
그러나 현실은 : 미들웨어가 병목 - 데이터와 비즈니스 로직 계층 사이..
문제 - 티어 기반 접근 방식
- 중앙 집중식 아키텍처의 병렬화
- 파트가 너무 많을 때는 어떻게 확장해야 되나
- 일관성 : 각 티어별로 HA 구성하고 일관성 맞추려면 되면 매우 복잡해짐
- 직렬화 추가 비용 : 서브 컴포넌트 간 통신 오버헤드 증가
- 수직 확장 vs 수평 확장 : 코드 안 바꾸고 수직, 수평 모델을 조합해서 쓰는 방법은 없나
- 동적인 확장 : 어플리케이션의 지원 필요 - 외부에서 생명 주기 관리를 가능하게 해야 하므로
티어를 확장 가능한 가상 서비스로 전환
- 트랜잭션 간 FIFO 유지해서 병렬 실행
- 논리적 처리 단위로 각 티어를 병합해서 직렬화 부담을 제거
- 그럼 이거 할 때 무슨 기술을 쓸건데?
Space Based Architecture (SBA)
- Write : 데이터 객체 쓰기
- Read : 데이터 객체 사본 가져오기
- Take : 데이터 객체 읽고 삭제
- Notify : 데이터 갱신 시 이벤트 생성
- 분산 서비스에 필요한 가상화 미들웨어를 제공
* 데이터 캐싱
* 로드 밸런싱
* 메시징
* 병렬 처리
- 단일한 모델, 기술, 런타임 환경
Space 기반 미들웨어 가상화
- JDBC, JMS, JCache, Space 등 인터페이스를 통해 클러스터 된 Space를 사용
- 같은 데이터가 다른 인터페이스를 통해 보일 수 있음
- 확장성 관리에는 단일 런타임, 여러 시스템에 복제
- 관리 부담과 개발 복잡도 감소
- 현재 존재하는 어플리케이션에 그리드 기능을 제공
컨테이너의 가상화를 통한 동적 확장성
기존 JavaEE 플랫폼 기반에서도 그대로 사용할 수 있는가?
- JCA와 세션 빈을 추상화/통합 계층으로 사용
- 가상 미들웨어 구현을 통해 JavaEE 플랫폼 확장
- 분산 캐싱, 병렬 처리, 메시징 버스




