2021.01.20

IDG 블로그 | 비용과 확장성을 최적화하는 클라우드 아키텍처 3가지

David Linthicum | InfoWorld
클라우드 기반 플랫폼의 가장 잘 알려진 이점은 사용한 만큼 내는 비용과 거의 무제한에 가까운 자원으로 확장할 수 있는 역량이다. 수요가 있기 전에 자원을 미리 구매할 필요도 없으며, 물리 하드웨어와 소프트웨어가 얼마나 필요할지 추정할 필요도 없다.

하지만 기업 IT 부서는 클라우드 컴퓨팅에서 확장성과 비용은 서로 연결된 개념이라는 것을 알아야 한다. 자원을 더 많이 사용할수록, 더 많은 비용을 내야 한다. 따라서 클라우드 비용은 자원 자체의 가격만큼이나 아키텍처 패턴에 따라 달라진다.
 
ⓒ Getty Images Bank

클라우드 기반 시스템을 구축할 때, 클라우드 아키텍처는 정말로 수많은 정답을 만들어 낸다. 물론 잘못된 결정을 내린다고 처벌을 받지는 않는다. 단지 덜 최적화될 뿐이다. 어떻게든 동작만 하면, 확장성과 비용을 완벽하게 최적화한 아키텍처보다 2배나 많은 비용을 낸다는 사실을 감춰준다. 

아키텍처는 특정 클라우드 플랫폼에 최적화하기 위해 애플리케이션을 리팩터링하거나 다시 작성할지를 결정할 때 매우 중요한 요소이다. 아니면 마이크로서비스나 이벤트 지향, 컨테이너, 컨테이너 오케스트레이션 등 핵심 구현 기술을 선택할 때도 중요하다. 이런 결정이 모여 월말에 받아보는 클라우드 요금 고지서의 숫자가 결정된다. 

그렇다면, 클라우드 아키텍트가 비용과 확장성 측면에서 생각해야 할 것은 무엇일까? 몇 가지 범용적인 아키텍처 패턴을 소개한다.

클라우드 기반 애플리케이션을 애플리케이션에 필요한 모든 클라우드 서비스의 최적화에 맞춰 튜닝하는 법을 배운다. 다시 말해, 애플리케이션을 데이터를 처리하고 기능을 수행하는 데 최소의 자원을 사용하도록 최적화해야 한다. 

이런 아키텍처 최적화는 컴퓨팅의 초창기, 즉 8KB 메모리를 탑재한 1970년대 장비를 다룰 때는 흔한 일이었다. 요즘 개발자는 애플리케이션을 작성할 때 이런 미니멀리즘 접근법으로 최적화하는 데 익숙하지 않다. 하지만 이렇게 하기만 한다면, 애플리케이션은 더 빨리 무한대로 확장하는 비용 증가도 최소화할 수 있다.

서비스가 필요 없어지면 즉각 할당을 해제한다. 가상 서버 같은 클라우드 자원을 프로비저닝한 이후, 다사용한 자원을 즉각 회수하지 않는 경우를 많이 본다. 심한 경우, 한 번 프로비저닝한 자원을 절대 회수하지 않아서 좀비 프로세스가 자원을 갉아먹고 비용만 늘어나기도 한다. 지금 클라우드에서 실행되는 것을 자세히 조사해 보면, 최소한 20개 이상의 프로세스가 아무 것도 하지 않고 돈만 먹고 있을 것이다.

확장성의 상충 관계를 파악한다. 필요한 자원을 할당하는 것은 좋다. 하지만 얼마나 세밀하게 자원을 할당하는지에 따라 큰 차이가 생긴다.

예를 들어, 몇 기가바이트면 해결할 수 있는 문제에 1테라바이트의 스토리지를 할당한다면, 최적화된 상태는 아니다. 약간의 여유를 가지고 자원을 활용한다는 개념 때문에 곤란을 겪을 수 있다. 남는 자원을 자원 풀로 회수할 가능성이 낮기 때문이다.

이런 면에서는 서버리스 컴퓨팅이 편리하다. 애플리케이션을 처리할 자원만을 할당하고, 사용한 자원은 즉각 자원 풀로 회수하기 때문이다. 하지만 모든 애플리케이션을 서버리스 시스템으로 쉽게 이식할 수 있는 것은 아니다. 

사실 클라우드 컴퓨팅에도 공짜는 없다. 시스템이 동작하도록 하기는 쉽지만, 확장성과 비용을 위해 워크로드를 최적화하는 것은 아직 재능을 키워야 하는 새로운 영역이다. editor@itworld.co.kr


2021.01.20

IDG 블로그 | 비용과 확장성을 최적화하는 클라우드 아키텍처 3가지

David Linthicum | InfoWorld
클라우드 기반 플랫폼의 가장 잘 알려진 이점은 사용한 만큼 내는 비용과 거의 무제한에 가까운 자원으로 확장할 수 있는 역량이다. 수요가 있기 전에 자원을 미리 구매할 필요도 없으며, 물리 하드웨어와 소프트웨어가 얼마나 필요할지 추정할 필요도 없다.

하지만 기업 IT 부서는 클라우드 컴퓨팅에서 확장성과 비용은 서로 연결된 개념이라는 것을 알아야 한다. 자원을 더 많이 사용할수록, 더 많은 비용을 내야 한다. 따라서 클라우드 비용은 자원 자체의 가격만큼이나 아키텍처 패턴에 따라 달라진다.
 
ⓒ Getty Images Bank

클라우드 기반 시스템을 구축할 때, 클라우드 아키텍처는 정말로 수많은 정답을 만들어 낸다. 물론 잘못된 결정을 내린다고 처벌을 받지는 않는다. 단지 덜 최적화될 뿐이다. 어떻게든 동작만 하면, 확장성과 비용을 완벽하게 최적화한 아키텍처보다 2배나 많은 비용을 낸다는 사실을 감춰준다. 

아키텍처는 특정 클라우드 플랫폼에 최적화하기 위해 애플리케이션을 리팩터링하거나 다시 작성할지를 결정할 때 매우 중요한 요소이다. 아니면 마이크로서비스나 이벤트 지향, 컨테이너, 컨테이너 오케스트레이션 등 핵심 구현 기술을 선택할 때도 중요하다. 이런 결정이 모여 월말에 받아보는 클라우드 요금 고지서의 숫자가 결정된다. 

그렇다면, 클라우드 아키텍트가 비용과 확장성 측면에서 생각해야 할 것은 무엇일까? 몇 가지 범용적인 아키텍처 패턴을 소개한다.

클라우드 기반 애플리케이션을 애플리케이션에 필요한 모든 클라우드 서비스의 최적화에 맞춰 튜닝하는 법을 배운다. 다시 말해, 애플리케이션을 데이터를 처리하고 기능을 수행하는 데 최소의 자원을 사용하도록 최적화해야 한다. 

이런 아키텍처 최적화는 컴퓨팅의 초창기, 즉 8KB 메모리를 탑재한 1970년대 장비를 다룰 때는 흔한 일이었다. 요즘 개발자는 애플리케이션을 작성할 때 이런 미니멀리즘 접근법으로 최적화하는 데 익숙하지 않다. 하지만 이렇게 하기만 한다면, 애플리케이션은 더 빨리 무한대로 확장하는 비용 증가도 최소화할 수 있다.

서비스가 필요 없어지면 즉각 할당을 해제한다. 가상 서버 같은 클라우드 자원을 프로비저닝한 이후, 다사용한 자원을 즉각 회수하지 않는 경우를 많이 본다. 심한 경우, 한 번 프로비저닝한 자원을 절대 회수하지 않아서 좀비 프로세스가 자원을 갉아먹고 비용만 늘어나기도 한다. 지금 클라우드에서 실행되는 것을 자세히 조사해 보면, 최소한 20개 이상의 프로세스가 아무 것도 하지 않고 돈만 먹고 있을 것이다.

확장성의 상충 관계를 파악한다. 필요한 자원을 할당하는 것은 좋다. 하지만 얼마나 세밀하게 자원을 할당하는지에 따라 큰 차이가 생긴다.

예를 들어, 몇 기가바이트면 해결할 수 있는 문제에 1테라바이트의 스토리지를 할당한다면, 최적화된 상태는 아니다. 약간의 여유를 가지고 자원을 활용한다는 개념 때문에 곤란을 겪을 수 있다. 남는 자원을 자원 풀로 회수할 가능성이 낮기 때문이다.

이런 면에서는 서버리스 컴퓨팅이 편리하다. 애플리케이션을 처리할 자원만을 할당하고, 사용한 자원은 즉각 자원 풀로 회수하기 때문이다. 하지만 모든 애플리케이션을 서버리스 시스템으로 쉽게 이식할 수 있는 것은 아니다. 

사실 클라우드 컴퓨팅에도 공짜는 없다. 시스템이 동작하도록 하기는 쉽지만, 확장성과 비용을 위해 워크로드를 최적화하는 것은 아직 재능을 키워야 하는 새로운 영역이다. editor@itworld.co.kr


X