실무에 사용한 데이터 엔지니어링 스킬에 대한 정리내용입니다.
개인적인 기록을 위해 작성하였습니다.
클라우드와 온프레미스
- 클라우드와 온프레미스
- 온프레미스(on-premises)
- 자사에서 데이터센터를 보유하고 시스템 구축부터운용까지 모두 수행하는 형태
- 시스템 기반의 구성 요소인 서버나 네트워크 장비를 모두 자사에서 직접 조달하여 시스템 요구사항에 맞춰 인프라를 구축하고 자사(또는 관련 시스템 자회사 등)에서 운용
- 하드웨어뿐만 아니라 OS나 미들웨어도 모두 자사에서 구입하며, 라이선스 관리나 버전업도 자사에서 합니다.
- 초기 시스템 투자에 드는 비용 부담이 크며, 시스템 가동 후의 운용에 드는 비용도 시스템 이용량과 상관없이 일정 금액을 부담해야 합니다.
- 퍼블릭 클라우드(public cloud)
- 인터넷을 공유하여 불특정 다수에게 제공하는 클라우드 서비스
- 누구나 비용을 지불하면 자원을 사용할 수 있는 모델로 빠른 자원 확보와 사용량 예측이 불가능한 서비스들에 적당합니다.
- 초기 투자 비용이 많이 발생하지 않고 사용한 만큼 비용이 청구되며 필요할 때 사용량을 늘릴 수 있습니다.
- 서비스를 여러 지역에 분산시켜 관리가 가능합니다.
- 모든 기술 스택에 대한 제어 불가하며 데이터 보안을 위한 추가적인 기술적인 투자 필요합니다.
- 프라이빗 클라우드(private cloud)
- 특정 기업 그룹에게만 제공되는 클라우드 서비스
- 특정 내부 인력들만 자원을 사용할 수 있는 모델, 보안이 중요한 서비스들에 적당하며 초기 투자비용이 많이 발생합니다.
- 클라우드의 기술적, 비용적 장점을 기업 내부 환경에서 똑같이 적용했으며 모든 기술 스택(Stack)에 대한 제어가 가능합니다.
- 서버 및 가상화 S/W 등 초기 투자 비용이 높고 모니터링과 관리를 위해 기술 투자가 지속적으로 발생함
- Hybrid Cloud
- Public Cloud와 Private Cloud를 같이 운영하는 모델로 통합관리를 위해서 기술 복잡도가 가장 높은 모델임
- 높은 보안이 필요한 서비스는 Private Cloud로, 사용량이 많이 변하는 서비스는 Public Cloud로 사용하며 필요에 따라서 서비스들을 옮기면서 사용 가능합니다.
- Private Cloud와 Public Cloud를 통합해서 관리하는 데에 추가적인 기술 투자 필요
- Managed Service
- 관리 및 서비스의 영역으로 사용자는 설치, 운영 및 유지보수를 모두 서비스로 제공받아 사용합니다.
- 운영체제, 미들웨어 등 IaaS 위에 독립적인 PaaS 레벨의 서비스 제공하고 DBA가 하는 부분까지 직접 Managed Service로 제공하며 클라우드 장점 극대화합니다.
- 장점
- 한 번의 클릭으로 바로 사용할 수 있는 서비스가 제공되어 빠르게 업무에 도입 가능
- 관리 및 유지보수가 가능한 기술력 또는 인력이 없더라도 사용 가능
- 다양한 API를 지원하여 개발, 테스트 및 배포 프로세스를 쉽고 빠르게 확보할 수 있습니다.
- 단점
- 특정 서비스에 종속될 수 있음(Lock-in 효과)
- Managed 되고 있는 영역에 대해 접근이 제약적입니다.
- 클라우드 서비스의 장점
- 신속성 : 서버 구축과 삭제를 클릭 몇 번을 이용해서 몇 분 내로 신속하게 진행할 수 있습니다.
- 유연성 : 트랙픽이 몰릴 때는 서버 대수를 늘렸다가, 트래픽이 감소할 경우 서버 대수를 줄이는 형태로 유연하게 서버 운영이 가능합니다.
- 경제성 : 클라우드 서비스는 사용한 시간만큼만 비용을 지불하면 되기 때문에 경제적입니다.
- 초기 투자 비용이 발생하지 않으며, 사용한 만큼 지불하면 됩니다.
- 규모의 경제를 통해 지속적인 가격 인하를 실현합니다.
- 미래에 필요한 인프라의 용량을 추정할 필요가 없습니다.
- 속도 및 민첩성이 향상됩니다.
- 데이터 센터 운용 및 유지 관리에 비용 투자가 필요하지 않습니다.
- 몇 분 만에 전 세계에 서비스를 런칭하거나 배포할 수 있습니다.
- 클라우드가 적합한 케이스
- 트래픽의 변동이 많은 시스템 - 회사 직원용 시스템(근태 관리, 회계, 인사 등)은 사용자가 한정되어 있고 트래픽을 예측하기가 쉬워 온프레미스도 큰 문제가 없지만 대외 서비스의 경우 트래픽을 예상하기가 쉽지 않음
- 사이징(sizing) : 트래픽 양에 따라 시스템 기반의 서버 사양이나 네트워크 대역을 가늠하는 설계. 사이징을 크게 잡으면 낭비가 되고 적게 잡으면 단기간에 증설하기가 어렵기 때문에 트래픽의 변동이 많은 시스템은 클라우드 시스템이 유리합니다.
- 오토스케일 : 시스템 부하에 맞춰 동적으로 서버 사양이나 스토리지 용량을 쉽게 증설시킬 수 있으며 시스템 사용량이 적을 때는 사양을 낮춤으로써 쓸데없는 시스템 투자를 줄입니다.
- 재해 대책으로 해외에 백업을 구축하고 싶은 시스템
- 재해와 같은 리스크가 발생했을 때 기간 업무를 중단하지 않거나 기간 업무가 중단된 경우라도 목표로 하는 복구 기간 안에 중요한 기능을 재개시켜, 사업 중단이 야기하는 리스크를 최소한으로 하기 위해 미리 준비해 두는 계획을 업무 연속성 계획(BCP)라고 합니다.
- 클라우드의 데이터센터는 전 세계에 퍼져 있기 때문에 자연재해로 인해 데이터 시스템이 다운되더라도 다른 곳에서 시스템을 계속 운영 가능합니다.
- 서비스를 빨리 제공하고 싶은 시스템이나 PoC(Proof of Concept)도 클라우드가 용이하며 초기 투자금이 적은 스타트업이나 개인 개발자도 클라우드가 유리합니다.
- 트래픽의 변동이 많은 시스템 - 회사 직원용 시스템(근태 관리, 회계, 인사 등)은 사용자가 한정되어 있고 트래픽을 예측하기가 쉬워 온프레미스도 큰 문제가 없지만 대외 서비스의 경우 트래픽을 예상하기가 쉽지 않음
- 온프레미스가 적합한 케이스
- 높은 가용성이 요구되는 시스템으로 온프레미스와 클라우드는 모두 가용성을 보장합니다만 개념에서 차이 존재합니다. 온프레미스는 서버가 죽지 않는 것을 목표하는 반면 클라우드는 많은 인스턴스로 이루어진 분산 환경에서 인스턴스가 죽으면 다른 인스턴스가 빠르게 대체하는 것을 의미합니다. 그냥 클라우드를 사용한다고 해서 가용성이 보장되는 것이 아니라, 가용성을 높이도록 직접 설계해야 합니다.
- 잠시라도 끊어져서는 안 되는 시스템이나 클라우드 업체가 보장하는 것 이상의 가용성이 필요한 시스템에서는 온프레미스가 유리합니다.
- 기밀성이 높은 데이터를 다루는 시스템. 자사의 보안보다 클라우드 프로바이더가 제공하는 보안이 더 좋을 수 있습니다만 물리적인 저장 장소를 명확히 알 필요가 있을 때는 온프레미스가 유리합니다.
- 특수항 요구사항이 있는 시스템
- 클라우드를 사용한다면 각 클라우드 프로바이더마다 보안 정책이 다르기 때문에 보안 표준을 구축하기 어렵습니다.
- 특정 유료 솔루션을 사용하는 경우나 클라우드가 지원하지 않는 특수한 플랫폼을 사용하는 경우에는 클라우드를 이용할 수가 없습니다.
Reference
'Back-End Development' 카테고리의 다른 글
IaC와 Terraform (0) | 2023.10.14 |
---|---|
모놀리틱 아키텍처와 마이크로서비스 아키텍처 (0) | 2023.03.27 |
인프라 기초 (0) | 2023.03.25 |