애플리케이션을 가동시키려면 여러 개의 서버에 기능과 역할을 분할하여 인프라의 전체 구성을 정함. → 인프라 아키텍처
대규모 웹 시스템의 경우 몇 개의 서브 시스템/기능으로 나누어 시스템을 개발하는 경우가 많기 때문에 애플리케이션 개발 기술 및 플랫폼 기술에 정통한 IT 아키텍트를 중심으로 인프라의 처리 방식을 결정
웹 3계층 아키텍처는 웹 애플리케이션 대표적인 인프라 이키텍처 중 하나로 웹 시스템의 서버들을 역할별로 3개로 나누는 설계 사상
프론트 서버
클라이언트의 웹 브라우저가 보낸 HTTP 요청을 받아, HTTP 응답을 반환하는 서버 기능을 가짐. 이 서버 기능은 웹 프론트 서버 또는 그냥 웹 서버라고 함.
웹 서버의 기능은 미들웨어로 구축하는 경우도 있으며, 오픈소스인 Nginx, Microsoft의 IIS(Internet Information Services) 등이 있음. 요청의 처리가 메인 업무이므로 부하가 높은 경우는 스케일러블하게 처리 대수를 늘리고, 로드 밸런서 등과 같은 기기를 사용하여 부하분산함.
애플리케이션 서버
애플리케이션 서버는 업무 처리를 실행하는 서버. 결제 처리, 수주 처리 등 애플리케이션의 처리를 실행하는 프로그램의 실행 환경이 됨. 애플리케이션 서버 기능도 프론트 서버 기능과 마찬가지로 미들웨어로 구축하는 경우도 있음.
데이터베이스 서버
영구 데이터를 관리하기 위한 서버. 애플리케이션의 처리 실행에서 발생하는 영구 데이터는 RDBMS 기능을 갖고 있는 미들웨어에서 관리되거나 NoSQL DBMS에서 관리. 대량의 데이터 축적이나 병령처리가 특기이기 때문에 많은 사용자의 액세스를 처리할 필요가 잇는 온라인 시스템 등에서 널리 이용됨. 영구 데이터는 높은 가용성이 요구되기 때문에 클러스터링과 같은 기술로 다중화 하는 경우가 많음. 또한 만일의 장애에 대비하여 데이터의 백업이나 원격지 보관등과 같은 대책이 필요. 데이터베이스를 조작하는 처리는 부하가 걸리는 경우도 있으므로 시스템 전체의 병목 부분이 되는 경우도 있음. ⇒ 운용 상황에 따라 OS나 미들웨어의 파라미터 설정의 변경과 같은 퍼포먼스 튜닝이 필요
스토리지의 저장 영역에는 한계가 있으며 고장 등으로 데이터가 소멸될 가능성도 있기 때문에 영구데이터를 적절히 관리할 필요가 있음.
데이터의 백업 및 복원
서버의 장애에 대비해 데이터를 백업. 데이터베이스 안에는 업무에 대한 기밀 정보도 포함되어 있으므로 보안 대책이나 적절한 운용 규칙을 정할 필요가 있음. 백업은 테이프 디바이스와 같은 물리 매체인 경우도 있는가 하면 클라우드 상의 스토리지 서비스를 이용하는 경우도 있음. 글로벌하게 사업을 전개하는 퍼블릭 클라우드 서비스를 이요함으로써 해외의 데이터센터에 백업을 저가로 보관 가능.
로그 수집
시스템이나 애플리케이션은 각 서버상에 저장하는 경우도 있지만 여러개의 서버로 된 분산 환경에서 통합 감시를 하는 경우는 로그 수집 전용 서버를 마련하는 것이 일반적. 또한 사용자 인증 시의 액세스 로그 등은 보안의 감사 로그로서 장기 저장이 의무화되는 경우도 있음. Unix 계열의 OS의 경우 syslogd라는 데몬을 사용하여 커널이나 애플리케이션으로부터 수집한 로그를 관리.
docker는 컨테이너를 사용하여 서버 기능을 제공. 컨테이너는 필요에 따라 생성하거나 파기하는 운용에 적합하며, 하나의 컨테이너에는 하나의 프로세스를 구성해 두는 것이 대원칙.
그래서 애플리케이션의 실행 모듈이나 각종 라이브러리의 모듈 미들웨어의 설정 파일 등은 서버 프로세스가 작동하는 컨테이너 안에 저장하고, 시스템 가동 후에 생성되는 영구 데이터에 대해서는 별도의 인프라 아키텍처를 검토하는 것이 바람직.