AWS 장애, 블록체인으로 복수할 날을 기다린다
이 기사를 공유합니다
김재윤
김재윤 2018년 11월22일 18:25
사진=Getty Images Bank


 

오늘 아침 9시 경, 클라우드 서비스를 제공하는 아마존 웹 서비스(AWS, Amazon Web Services)의 서울 리전(region)에 DNS 장애(DNS resolution issues) 문제가 발생하여 AWS를 사용하는 각종 서비스들이 중단되는 사태가 발생했다. 이로 인해 업비트, 코인원 등 암호화폐 거래소 뿐만 아니라 쿠팡, 배달의 민족, 그리고 코인데스크코리아 등 아마존을 사용하는 국내 기업들이 서비스하는 어플리케이션 대부분에 접속이 불가능했다. 우리나라 기업들의 AWS에 얼마나 의존하고 있는지, 그리고 클라우드 서버가 잘못되면 어떻게 될지 조금이나마 체험해볼 수 있었던 해프닝이었다.

많은 서비스들이 클라우드 서버에 의존하는 것처럼 우리도 삶의 많은 부분을 서비스 제공자에게 의존하고 있다. 누구나 한 번쯤은 은행 점검시간에 금융 서비스를 이용하지 못했던 경험이 있을 것이다. 또 지난 10월에는 유튜브와 인스타그램 서버가 먹통이 돼 서비스를 이용하지 못했던 적이 있었다. 이처럼 사용자가 어떤 서비스를 이용하고 싶을 때 서비스 제공자, 또는 인프라 제공자의 문제로 이용하지 못하는 것을 가용성 문제(availability problem)라고 부르고, 가용성 문제가 발생하지 않는 척도를 안정성(stability)이라고 부른다.

평소에는 안정성이 중요하지 않지만, 만약 중요한 순간에 서비스를 이용하지 못한다면 사용자는 큰 피해를 보게 된다. 오늘 아침에는 비트코인의 환율이 블랙프라이데이를 맞아 이미 폭락해서 바겐 세일 중이었기 때문에 크게 문제되지 않았지만, 만약 폭락 중인 상황이었다면 누군가는 매우 아찔한 상황을 맞아 큰 피해를 볼 수도 있었을 것이다. 혹은 누군가는 다른 서비스를 이용하지 못해서 큰 피해를 보았을 수 있다.

안정성이 중요한 시기가 사람마다 다르고, 언제 그러한 상황이 발생할지 예측할 수 없기 때문에 서비스 제공자는 그런 일이 발생하지 않도록 이중, 삼중으로 대비를 해 두어야 한다. 이번 사태에서도 AWS 서울 리전이 아닌 다른 곳에 백업 서버를 마련해 두거나 외부 DNS 서버에 IP를 등록해 두는 방법 등으로 대비를 잘 해둔 서비스들은 크게 장애를 겪지 않았다.

앞서 가용성 문제가 발생하는 상황을 대비하는 방법들에 대하여 언급하였는데, 이 모든 것들이 단일 장애점(SPoF, Single Point of Failure)을 없애기 위한 방법들이다. 그리고 단일 장애점을 없애는 방법은 같은 역할을 하는 개체(entity)를 여러 개 만들어 운영하는 것이다. 같은 역할을 하는 개체를 많이 만들어서 얻는 효용은 가용성을 높여서 서비스의 안정성을 높이는 것이기 때문에, 서비스가 장애 없이 잘 돌아가는 상황에서는 얻는 효용에 비해서 드는 비용이 상당이 크다. 그렇기 때문에 규모가 작은 서비스 제공자들은 장애가 발생했을 때 해결할 요량으로 단일 장애점을 그대로 둔 채 서비스를 운영하기도 하고, 큰 서비스 제공자의 경우에도 매우 중요한 부분에만 단일 장애점을 없애기 위한 장치를 마련하여 비용을 절감한다. 즉, 서비스 제공자는 최소 비용으로 일정 수준 이상의 안정성을 제공하기 위한 방법을 고민해야 한다.

그런데 단일 장애점을 해결하기 위해 같은 역할을 하는 개체를 여러 개 만든다는 개념을 어디서 들어본 것 같지 않은가? 극단적으로 모든 개체가 같은 역할을 하는 서비스 중 하나가 블록체인으로 대표되는 탈중앙화(decentralized) 네트워크이다. 탈중앙화 네트워크에서는 네트워크에 참여하는 모든 개체가 같은 역할을 수행하기 때문에 지구 종말 등 극단적인 상황, 혹은 네트워크에 접속하기 힘든 상황이 아니라면 웬만해서는 가용성 문제가 발생하기 힘들다. 그렇기 때문에 이더리움은 죽지 않는 월드 컴퓨터라고도 불린다.

이번에 AWS에서 문제가 되었던 DNS resolution 문제의 경우 아직 아마존의 공식 입장이 나오지 않아서 명확한 원인을 파악할 수 없지만, 추측하기로는 AWS 내부에 클라우드 인스턴스를 관리하는 가상 네트워크 상의 DNS resolver가 단일 장애점이었고, 여기에 장애가 발생한 것으로 보인다. DNS란 Domain Name System의 약자로써 사람이 알아볼 수 있는 자연어로 구성된 도메인 이름(예:www.coindeskkorea.com)을 해당 서버가 부여받은 고유한 IP address(52.79.105.202)로 변환해주는 시스템을 의미하고, DNS resolver는 클라이언트에 있는 DNS이다.

만일 DNS를 탈중앙화된 형태의 서비스에서 운영했다면 단일 장애점이 없으면서도 안정성을 제공하기 위해 여러 개체를 만드는 비용보다 더 적은 비용으로 서비스를 구축할 수 있었을 것이다. 실제로 이더리움 블록체인 위에서 비슷한 서비스를 제공하기 위한 ENS(Ethereum Name Service, https://ens.domains)가 개발되어 운영되고 있고, 비슷한 서비스들이 현재 운영 중이거나 개발 중이다.

하지만 현재 퍼블릭 블록체인 기술은 명확한 성능 한계가 존재하기 때문에 아직까지 안정성을 논하기에는 시기 상조이다. 또한 DNS가 다루는 데이터처럼 누구나 접근할 수 있는 정보가 아니라 일부 사람이나 단체들만 서로 공유해야 하는 데이터를 탈중앙화된 네트워크에서 다루기는 힘들다.

앞으로 기술이 발전하여 실생활이나 산업에서 탈중앙화 네트워크를 무리 없이 사용할 수 있을 정도가 되면 많은 부분에서 탈중앙화 네트워크를 이용하여 적은 비용으로 단일 장애점을 해결할 수 있을 것으로 보인다. 또한 공유 불가능한 데이터의 경우에도 컨소시엄 형태의 블록체인을 만들어서 효율적인 시스템을 만들 수 있을 것이다.

다시 말해 중앙화된 구조와 탈중앙화된 구조를 적절하게 사용한다면 기존의 중앙화, 혹은 탈중앙화 구조가 가지고 있는 장점을 극대화 하고 단점을 보완하는 형태의 새롭고 효율적인 시스템을 만들 수 있을 것이다. 블록체인 기술이 빨리 발전하여 그러한 서비스를 만들 수 있길 기대한다.

 




이 글을 쓴 서울대학교 블록체인학회 디사이퍼 김재윤 회장은 현재 서울대 전기정보공학부에서 박사과정을 밟고 있습니다. 김 회장은 스스로를 '목적이 아닌 수단으로서 블록체인을 연구하고 있는 대학원생'이라고 소개합니다.

제보, 보도자료는 contact@coindeskkorea.com



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.