What Is Cloud Native?

woopii·2024년 8월 14일

기본적으로 클라우드 네이티브 애플리케이션에는 과거 60년 동안 네트워크 애플리케이션을 대규모로 실행하기 위한 기술이 모두 집적되어있다. 이 기술은 부하가 크게 변함에도 확장이 가능하고, 환경이 불확실해도 탄력성이 존재하며, 변화하는 요구사항에도 관리가능하다.

클라우드 네이티브 기술을 통해 회사의 조직은 프라이빗, 하이브리드, 퍼블릭 클라우드와 같은 동적 환경을 통해 확장 가능한 애플리케이션을 구축하고 실행할 수 있다.

이러한 기술은 복원력이 있고 관리가능하며 모니터링이 가능하게 느슨하게 결합된 시스템을 가능하게 한다. 여기에 더불어 자동화가 결합되면 엔지니어가 최소한의 수고로 변화를 예측이 가능하게 할 수 있다.

Scalability

클라우드 컴퓨팅에서 확장성은 시스템의 수요가 기준치보다 상향 또는 하향했을 때 예상대로 계속해서 행동하는 능력으로 정의할 수 있다. 즉 수요가 현저히 변했고 의도한 기능을 수행하기 위해 리팩터링 될 필요가 없다면 확장성이 있다고 볼 수 있겠다.

확장 불가능한 서비스는 초기 조건에서 매우 잘 작동하는 것처럼 보이기 때문에 서비스 설계시 확장성이 주요 고려 사항이 되는 것은 아니다. 단기적으로 괜찮을지는 모르겠지만 중장기적으로 보면 시간과 비용을 모두 절약할 수 있다.

서비스를 확장할 수 있는 방법에는 두 가지가 있으며, 각각의 장단점이 있다.

1. Vertical scaling(수직 스케일링)

시스템에 이미 할당된 하드웨어 리소스를 업사이징(또는 다운사이징)함으로써 시스템을 수직으로 확장(또는 스케일업)할 수 있다. 예를 들어 전용 컴퓨팅 인스턴스에서 실행 중인 데이터베이스에 메모리 또는 CPU를 추가하는 것이다. 수직 확장은 기술적으로 비교적 간단하다는 장점이 있지만, 당연하게도 주어진 인스턴스만큼만 확장할 수 있다.

2. Horizontal scaling(수평 스케일링)

시스템은 서비스 인스턴스를 추가(또는 제거)함으로써 수평으로 확장(또는 확장)될 수 있다. 예를 들어, Kubernetes의 로드 밸런서 또는 컨테이너, 또는 다른 컨테이너 오케스트레이션에 있는 서비스 노드의 수를 증가시킴으로써 수행될 수 있다. 이 전략은 중복성 및 사용 가능한 인스턴스 크기의 한계로부터 vertical scaling 보다는 자유롭다. 그러나 복제본이 더 많다는 것은 더 큰 설계 및 관리 복잡성을 의미하며 모든 서비스가 수평으로 확장될 수 있는 것은 아니다.

Loose Coupling

loose coupling은 시스템의 구성 요소가 다른 구성 요소에 대한 최소한의 지식을 가지고 있는 시스템 특성 및 설계 전략이다. 일반적으로 한 구성 요소의 변경이 다른 구성 요소의 변경을 필요로 하지 않을 때 두 시스템은 느슨하게 결합되어 있다고 말한다.

Resilience

Resilience은 시스템이 오류와 결함을 얼마나 잘 견디고 복구하는지를 나타내는 척도이다. 시스템의 일부가 고장났을 때 시스템 전체가 완전히 shutdown되는 것이 아니라 시스템이 올바르게 계속 작동할 수 있다면 복원력이 있는 것으로 본다.

이상적인 세계에서는 모든 시스템이 고장이 발생하지 않도록 세심하게 설계될 것이지만, 이는 비현실적인 목표이다. 모든 고장을 예방할 수는 없으며, 시도하는 것은 낭비적이고 비생산적이다. 그러나 시스템의 모든 구성 요소가 고장이 확실하다고 가정하고, 잠재적인 고장에 대응하고 고장의 영향을 제한하도록 설계함으로써 일부 구성 요소가 고장이 아니더라도 기능적으로 건강한 시스템을 만들 수 있다.

복원력을 위해 시스템을 설계하는 방법에는 여러 가지가 있다. 중복 구성 요소를 배치하는 것이 가장 일반적인 방법일 수도 있지만, 이는 결함이 동일한 유형의 모든 구성 요소에 영향을 미치지 않는다는 것을 가정한 것이기도 하다. 회로 차단기와 재시도 로직을 포함하여 구성 요소 간에 고장이 전파되는 것을 방지할 수 있다.

Manageability

시스템의 관리 가능성은 시스템의 안전성, 원활한 작동 및 요구 사항에 대한 준수를 유지하기 위해 시스템의 동작을 쉽게 변경할 수 있는 것이다. 시스템의 코드를 변경할 필요 없이 충분히 동작을 변경할 수 있다면 시스템은 관리 가능한 것으로 간주될 수 있다.

Observability

어떤 시스템의 관찰가능성은 그 시스템의 내부 상태가 외부 아웃풋에 대한 지식으로부터 얼마나 잘 추론될 수 있는지를 측정하는 척도이다.

profile
모든일을 단순하게

0개의 댓글