인프라의 구성요소
인프라란 어플리케이션 동작에 필요한 하드웨어/OS/미들웨어 등을 의미하며, 이러한 인프라를 다루는 기술을 인프라 기술이라 부른다. 일반적으로 시스템 요구 사항은 크게 두 가지로 나뉜다.
시스템 요구사항
기능 요건
- 필요한 시스템 기능을 정의한 것을 의미한다. 시스템과 소프트웨어에서 무엇이 가능한지를 정리하여 프로그래밍으로 해결한다.
비기능 요건
- 시스템 성능과 신뢰성/확장성/운영성/보안 등과 관련된 요건으로 기능 이외의 모든 요건을 말한다.
- 비기능 요건을 만족하려면 프로그래밍 지식 뿐 아니라, 인프라에 관한 지식도 필요하다.
인프라의 기본 구성요소
하드웨어
네트워크
- 시스템 사용자가 원격지에서 서버로 엑세스 할 수 있도록 연결하는 요소이다.
- 라우터, 스위치, 방화벽 등 네트워크 기기와 이를 접속하기 위한 케이블 배선 등도 해당된다.
- 또한 VPN, 스팸 필터, 침입 탐지 시스템(IDS) 등의 보안 기기도 포함된다
- 사용자가 이용하는 클라이언트 단말에서 무선 LAN으로 접속하는 경우에는 엑세스 포인트 등도 필요하다.
OS
미들웨어
- 서버 OS에서 서버가 특정 역할을 수행할 수 있도록 동작하는 소프트웨어를 말한다.
- 미들웨어는 상용 소프트웨어와 오픈소스로 나뉜다.
- 다양한 기능을 가진 미들웨어가 있어, 인프라를 설계할 때에 어떤 미들웨어를 어떻게 사용할지 선택하는 것이 중요하다.
인프라의 종류(클라우드와 온프레미스 환경)
1. 온프레미스(on-premiss)
- 시스템 구축 ~ 운영까지 자사에 데이터 센터를 두고 수행하는 형태
- 지금까지 대부분의 기업들이 적용해 옴
- 초기 시스템 투자 비용 부담이 크며, 시스템 사용량과 관계없이 시스템 구동 후 운영에 드는 비용이 지속적으로 나감
2. 퍼블릭 클라우드(Public Cloud)
- 인터넷을 통해 불특정 다수에게 제공되는 클라우드 서비스
- 인프라 관련 초기 투자가 필요 없다
- Iaas, PaaS, SaaS 로 나뉜다
3. 프라이빗 클라우드(Private Cloud)
- 특정 기업 그룹에만 제공하는 클라우드 서비스
- 온프레미스와 퍼블릭 클라우드의 중간에 있다
<클라우드에 적합한 케이스>
- 트래픽 변화가 많은 케이스 (ex:고객용 서비스, 사이징이 어려운 경우)
- 재해에 대비하기 위해 해외에 백업을 구축하고자 하는 시스템
- 되도록 빨리 동작해야 하는 시스템 (ex: 신규 기능에 대한 테스트인 스크래치 빌딩(scratch building)으로 시스템을 구축하는 경우)
<온프레미스에 적합한 케이스>
- 높은 가용성이 요구되는 시스템 (ex: 미션 크리티컬한 시스템의 경우, 클라우드 벤더가 보장하는 가용성 이상의 성능이 요구되는 경우도 있음)
- 높은 기밀성이 요구되는 데이터를 다루는 시스템
- 클라우드의 경우, 데이터를 저장하는 장소를 명확하게 지정할 수 없다
- 저장 장소를 물리적으로 명확하게 해야 하는 업무 데이트의 경우 퍼블릭 클라우드를 사용할 수 없다
- 특수 요건의 시스템
- 일반적이지 않은 디스크나 특수한 플랫폼에서만 동작하는 시스템을 구축하여 마이그래이션 해야 하는 경우,
- 클라우드가 이러한 환경이 대응하지 않는다면 사용할 수 없다
- 총 비용이 높은 시스템
- 클라우드에서는 서버 리소스 요금뿐만 아니라 유저수에 따라 비용을 과금하는 경우도 많다.
- 많은 유저가 장기간, 빈번하게 사용하는 기간계 시스템의 경우, 유저마다 시스템 사용 요금을 과금하면 총 투자 비용이 높아질 수 있다.
여러 클라우드를 조합한 하이브리드 클라우드에 대한 니즈도 커지고 있다. 이러한 하이브리드 클라우드에서는 서로 다른 환경의 어플리케이션이 문제 없이 동작해야 한다. 따라서, 어플리케이션을 호환하고 인프라와 함께 시스템을 구성하는 방법을 고민하는 것이 중요하다.
인프라 구축 및 운영 프로세스
업무 시스템의 베이스가 되는 인프라 구축에서 운영까지 전체 흐름은 아래와 같다.
시스템 구축 계획 및 요구 사항 정의 단계
→ 인프라 설계 단계
→ 인프라 구축 단계
→ 운영 단계
서버
서버에 대한 주요 구성요소에 대해 알아보자
CPU
- CPU는 프로그램 연산과 처리 등을 수행하는 전자 회로 부품이다.
- CPU '주파수'가 크면 클수록 높은 연산 능력을 가진다.
- CPU의 주요 연산 회로를 Core라고 부르며
- Core수가 클수록 -> 동시에 처리할 수 있는 연산 처리 수가 증가한다.
- 서버에서 사용하는 CPU는 대부분 여러 Core로 이루어진 multi-core이다.
- 또한 CPU의 빠른 처리를 위하여 메모리와의 처리 속도 차를 줄이기 위한 동적 캐시를 사용한다.
- 이러한 캐시 사이즈도 성능과 연관된다.
- CPU 성능이 높을수록, CPU의 Core 수와 소켓 수에 따라 가격이 올라간다.
메모리
- CPU가 직접 접근(access)할 수 잇는 기억장치를 메모리(주기억장치)라 한다.
- 메모리는 기억 영역이기 때문에 데이터 용랑이 크고 전송속도가 빠를 수록 성능이 높지만,
- 서버용으로는 저전력에 에러 처리 기능을 가진 모델이 선택된다.
- 메모리 성능이 높을수록 비용이 많이 든다.
스토리지
- 데이터베이스의 데이터를 저장하는 디바이스로 보조기억장치라고 불린다.
- 업무 시스템에서는 대량 데이터를 처리하는 경우가 많으므로, 이러한 스토리지 용량과 read 및 write 속도가 시스템 전체 응답 시간에 영향을 끼친다.
- 스토리지에는 하드디스크와 SSD 등이 있으며
- 하드디스크 종류로는 가격이 싸고 용량이 큰 SATA, 높은 신뢰성을 가진 SAS 등이 있다.
- 또한 SAN 스토리지 등 기업에서 사용하는 Fiber Channel(FC) 하드디스크도 있다.
- 하드디스크에 장애가 발생하면, 중요 데이터가 분실될 수 있으므로 대부분 RAID 구성을 해야한다.