본문 바로가기

쉽게 풀어본 IT 기술

건축물의 구조 설계 같은 시스템 아키텍쳐

시스템 아키텍쳐는 시스템의 서버들의 구성 모습이다. 구조라고 말할 수도 있다. 시스템 구성도로 표현을 하기도 한다. 서버간 연결하는 구성도만을 얘기하는 것은 아니고 좀더 깊은 내용까지 아키텍쳐라고 할 수 있다. 예를 들면 어떤 소프트웨어로 구성을 할지에 대한 것도 아키텍쳐라고 할 수 있다. 이렇게 아키텍쳐를 전문으로 구성하고 설계하는 사람들을 아키텍트라고 한다.  왠지 아키텍트라고 하면 산출물이나 내용을 말하는거 같긴 합니다만, 역할자를 말한다. 

시스템 아키텍쳐는 시스템의 기능이나 성능 면에서 중요한 의미가 있다. 어떤 아키텍쳐를 가지냐에 따라서 확장이 용이할 수도 있고, 반대로 어려울 수도 있다. 따로는 SOF(Single of Failure)라고 해서 실패 포인트를 가질 수도 있다. 이러한 것을 보완해야 하는게 아키텍쳐이다. 실패 포인트라는 것은 외부와의 연동이라든가 어떤 특정 서버가 죽으면 전체 시스템이 장애가 난다거나 하는 지점이다. 이런 지점은 이중화를 한다든지 죽어도 타 시스템에 영향이 최소화가 되도록 설계를 해야 한다.

건축물에 있어서도 설계는 매우 중요합니다. 사람들이 매우 붐비는 공항을 설계한다고 했을 때 공항에 가보면 티켓을 발권하고, 비행기에 탑승까지 긴 여정이 있을 것이다. 이것이 프로그램으로 말하지만, 프로세스인것이고, 이 프로세스가 매끄럽게 잘 진행될 수 있도록 동선을 잘 설계야 해야 할 것이다. 중간에 게이트가 매우 좁다던가 하나만 있게 되면 공항이 아무리 커도 그 게이트에서 진척이 매우 어려워서 전체 공항에 대한 대기 시간이 매우 높아질 것이다. 시스템에서도 특정 구간에서 병목이 발생될 수가 있다. 그래서 프로그램의 흐름을 잘이해하고, 시스템 간의 연계 관점으로 생각을 해야 한다.

또 한편으로 아키텍쳐를 구성하는 것은 비용관점의 생각도 고려해야 한다. 성능을 높인다는 이유로 최고 높은 사양의 시스템으로만 구성하는 것도 효과적인 방법은 아니다. 성능을 고려하는 최적화된 시스템 구성이 좋다. 그리고 아키텍쳐 시 고려해야 할 점은 용량이다. 성능과 용량은 내용이 약간 다르다. 성능은 얼마나 빠른가이고, 용량은 동시에 얼마나 많은 트래픽을 처리할 수 있는가 관점이다. API를 호출하여 얼마나 빠른 응답인지 테스트를 해서 최적화된 시스템을 구성하고, 최소의 비용으로 구성했다고 하는 상황에서 시스템을 오픈을 했는데, 동시 접속이 많아져서 서버가 죽거나 응답을 못한다면 제대로 된 설계가 아니다. 용량 즉 실제 서비스 수행시 접속들어올 유저수를 감당할 수 있을만큼의 서버가 준비되어야 한다. 그래서 성능 테스트라는 이름으로 테스트를 할 때 속도도 중요하지만, 얼마나 버틸 수 있는지 그리고 용량이 얼마인지를 같이 테스트를 한다. 성능 테스트 도구는 여러가지가 있다. 로드러너와 같은 사용툴도 있고, Jmeter나 네이버에서 오픈 소스 기반으로 만든 Ngrinder등이 있다. 이 테스트 둘은 여러개의 쓰레드를 통해서 동시에 여러 요청을 생성하여 서버를 호출한다. 이러한 과정을 통해서 서버는 얼마나 많은 동시 요청을 수행할 수 있는지 알 수 있다. 서버가 응답을 해주다가 급격히 느려지거나 더이상 응답을 못해주는 시점이 오면 그것을 임계치라고 한다. 임계치가 해당 시스템의 용량이 되는 것이다. 임계치를 고려하여 평소 트래픽 대비 시스템이 더 필요한지 덜 필요한지를 산정할 수 있다. 하지만 요즘 클라우드 컴퓨터에서는 이러한 시스템을 미리 많이 만들지 않아도 필요시에 늘어나도록 아키텍쳐링이 되어 있는 서비스도 있다. Auto-scale out 이라고 부르고, 동시 접속이 몰렸을 때 특정 조건이 되면 서버를 증설을 시키고, 붙혀 나간다. 

연말 정산 시스템이라든가, 기차 예매 사이트 등에서 이용하면 효율적인 서버 관리를 할 수 있다. Auto-Scale out이라는 것을 구성할 때 사전에 어느정도 임계치에서 서버를 늘릴 지 설정하고, 실제 테스트도 수행을 해봐야 한다. 구성이 해두고, 제대로 동작되지 않는다면 적절하게 서버를 구성한 것에 비해서 더 안좋은 상황이 될 수도 있다. 미리 이러한 구조의 동작에 대해서는 확인을 해야한다.


책처럼 전체를 보기를 원하시면 아래 링크를 클릭하시고 북마크 하셔서 보시면 편리합니다. 

https://wikidocs.net/22333