Client/Server Architecture

- 클라이언트: db application을 통해 db에 접근하여 상호작용을 한다.
- 서버: db 소프트웨어를 실행하고, 동시성을 처리한다.
위 사진과 같이 여러 host로 각각의 task를 처리하는 것을 distributed processing이라고 한다.
장점
- 클라이언트에서 데이터 처리를 할 필요가 없고, 사용자로부터 요청을 받아서 서버에서 받은 데이터를 보여주기 위한 시각화만 하면 된다.
- 클라이언트 어플리케이션이 데이터의 물리적 위치에 의존적이지 않게 된다. 데이터가 다른 db 서버로 옮겨져도 여전히 그대로 실행 가능하다.
- OS를 통한 멀티태스킹, 공유 메모리 기능을 이용하여 높은 레벨의 동시성, data 무결성 같은 높은 성능의 어플리케이션을 사용할 수 있다.
- 클라이언트는 보여주기 위해 서버는 프로세싱 또는 저장을 위해 최적화될 수 있다.
- 값싼 클라이언트 워크스테션으로 네트워크를 통해 원격으로 효율적으로 서버에 접속할 수 있다.
- 데이터와 어플리케이션의 수정 없이 스케일을 확장(scale out, scale up)할 수 있다.
- 데이터가 모든 컴퓨터에 있는 것이 아닌 서버에만 존재하기 때문에 동시 접근 측면에서 더 효율적이고 접근하기 쉬워진다.
- reqeust와 result만 오고가기 때문에 네트워크 트래픽이 최소화 된다.
단점
- 네트워크를 통한 접속이기 때문에 보안 위험이 존재한다.
- 모든 클라이언트에서 어플리케이션을 설치해야한다.
WEB3 계층
어플리케이션을 이제 WAS에서 관리

장점
- 직접적인 접속 요청을 웹 서버 계층에 한정하여 보안이 향상됨.
- 어플리케이션 계층에 비즈니스 로직이 집중됨.
Service-Oriented Architecture (SOA)
네트워크를 통해 컴퓨터 간 상호 작용을 지원하는 서비스에 의존하는 다중 계층 아키텍처.
자족적인 기능을 갖춘 endpoint로, 명확한 기능성과 서비스 수준 agreement를 가지고 있으며, 모니터링 및 관리가 가능하고 정책을 강제하는 데 도움이 된다.
Global Data Services (GDS)
글로벌 서비스를 위한 소프트웨어 인프라.
GDS는 GDS 구성을 자동화하고 중앙 집중화하여 구성, 유지 관리 및 모니터링을 수행하며, 글로벌 서비스에 대한 로드 밸런싱과 장애 조치를 지원한다. 이 프레임워크는 최소한의 관리 오버헤드로 이러한 가상 자원을 관리하여, GDS 구성이 추가 클라이언트 요청을 처리할 수 있게 한다.
사용자의 요구사항에 따라 다음과 같은 서비스들을 구성할 수 있다.
- 하나 이상의 RAC 인스턴스에 걸쳐있거나, GDS로 인해 관리되어지는 global topology 속 다중 db에 걸쳐 있을 수 있다.

- single db가 여러 서비스를 지원할 수 있다.
- 확장을 하지 않거나 XA affinity 같은 경우 하나의 db당 하나의 서비스만 지원하게 할 수 있다.
GDS는 GDS configuration을 통해 국내외적으로 복제된 db를 통합할 수 있게 해준다.
장점
- 전세계적으로 분산된 다중 db configuration 등을 포함한 자원을 중앙에서 관리할 수 있다.
- global scalability, availability, 런타임 로드 밸런싱을 제공.
- 무중단 장애 조치 지원
- 동적 db 추가, 마이그레이션
- 최적 자원 활용을 지원.
Global Service Manager
글로벌 서비스 매니저는 GDS 컴포넌트 중 핵심 소프트웨어로 서비스 수준의 로드 밸런싱, 장애 조치 및 GDS 구성 내 서비스의 중앙 집중식 관리를 제공한다.
Dedicated Server Architecture
dedicated server architecture는 클라이언트 프로세스를 대표하는 dedicated server 프로세스를 만드는 아키텍처이다.

유저와 서버 프로세스가 2가지 방식으로 소통할 수 있다.
- 만약 클라이언트 프로세스와 dedicated server 프로세스가 같은 컴퓨터에서 실행된다면, interprocess 방식으로 수행된다.
- 만약 다른 컴퓨터에서 실행된다면, 네트워크 같은 방식을 통해 프로그램 간 통신을 한다.
Shared Server Architecture
shared server architecture에서는 dispatcher로 들어오는 여러 요청들을 공유 서버 프로세스 pool로 전달한다.
큐에 있는 idle 상태인 shared pool를 통해 요청을 처리하기 때문에 dedicated server porcess가 필요 없다.

장점
- OS 프로세스 수를 줄인다. 적은 수의 shared server가 많은 dedicated server로 수행하는 것과 동일한 양의 처리가 가능하다.
- 인스턴스 PGA 메모리를 줄인다. 서버 프로세스가 적기 때문에 PGA 수가 줄어들어서 메모리도 줄어든다.
- 어플리케이션의 scalability와 동시에 연결할 수 있는 클라이언트의 수를 증가시킨다.
- 클라이언트의 연결/해제 속도가 더 빠르다.
단점
- 경우에 따라 응답 시간이 느릴 수 있다.
- 일부 기능이 아직 불완전하다.
- 설정 및 튜닝이 어렵다.
가이드라인에서는 OS가 처리할 수 있는 수준보다 많은 동시 접속 처리가 필요할 때 사용하는 것을 권장한다.
오라클에서는 dedicated server와 shared server를 동시에 섞어서 사용할 수 있다.
-
만약 리스너가 shared server 프로세스가 필요하다고 판단하면, 리스너는 가장 가벼운 부하를 가진 디스패처 프로세스의 주소를 반환하고, 클라이언트 프로세스는 직접 디스패처에 연결한다.
-
만약 프로세스가 디스패처와 통신할 수 없거나, 클라이언트 프로세스가 dedicated server를 요청하는 경우, 리스너는 전용 서버 프로세스를 생성하고 적절한 연결을 한다.
Database Resident Connection Pooling (DRCP)
DRCP는 dedicated server process와 db session을 결합한 pool server를 사용한다. 이 모델은 연결에 대한 오버헤드를 줄일 수 있다.
클라이언트가 db에 접근을 요청할 때, 연결 브로커는 pool에서 서버 프로세스를 선택해서 클라이언트에게 전달한다. 클라이언트는 요청이 처리되는 동안 해당 서버 프로세스에 직접 연결된다. 서버가 요청을 처리하면, 서버 프로세스는 다시 pool로 반환되고, 클라이언트와의 연결은 브로커를 통해 다시 복원된다.

Program Interface
Program Interface는 db 어플리케이션과 db 사이에 있는 소프트웨어 층이다.
프로그램 인터페이스는 다음과 같은 기능을 제공한다.
- 보안 장벽 제공
클라이언트 프로세스가 SGA에 destructive한 접근을 하지 못하도록 한다.
- 통신 메커니즘 역할
요청을 포맷하고, 데이터를 전달하며, 오류를 포착하고 반환한다.
- 데이터 변환 및 번역
서로 다른 종류의 컴퓨터 간 또는 외부 사용자 프로그램 데이터 유형 간의 데이터 변환 및 번역을 수행.