2017년 3월 24일 금요일

[217호 웹진: 동향 브리핑] 구글의 차세대 서비스에 대한 동향


구글의 차세대 서비스에 대한 동향
하루에도 여러 번 새로운 IT 기술이 나오는 요즘이지만 그 중에서도 구글의 다양한 연구 영역은 손에 꼽는다. 연구를 시작할 당시에는 왜 저런 연구를 하는 것인가라는 의심을 받기도 하고 실제로도 쓸모 없는 연구로 선정되기도 하지만 많은 도전과 연구 정신은 다양한 기술과 서비스의 원천이라 할 수 있다. 이번 회에서는 구글이 연구했거나 연구 중인 프로젝트에 대해 살펴보기로 한다.
구글 클라우드 플랫폼(Google Cloud Platform)
구글에서 준비하고 제공하는 서비스 중에서 구글 클라우드 플랫폼을 가장 먼저 얘기하는 이유는 구글의 다양한 서비스와는 별개로 소프트웨어 개발자나 업체에 제공하는 개발 환경 측면에서 매우 중요한 역할을 할 수 있을 것으로 예측되기 때문이다.
클라우드는 직접 지어서 사용하지는 않지만 누군가 만들어 놓은 정해진 장소에 서버 등을 배치하여 사용하던 1세대 방식에서 버추얼 형태로 만들어 사용하던 2세대로 변했고 지금도 2세대 서비스가 많다고 볼 수 있다. 이것이 더 발전되면 환경을 고민하지 않고 개발할 수 있는 3세대로 이동되고 있다(그림1).

<그림1> 클라우드의 변천
출처: Google Cloud

구글 클라우드 플랫폼은 3가지로 구분할 수 있는데 애플리케이션 런타임 서비스(Application Runtime Services), 데이터 서비스(Data Services), 인프라와 운영(Foundation Infrastructure & Operations)이다(그림2). 이러한 플랫폼은 개발자가 동일한 개발 환경에서 개발을 할 수 있도록 도와주는데 예를 들어 원하는 기능의 API를 선택하여 호출해서 쓰는 형태다.

<그림2> 구글 클라우드 플랫폼의 종류
(a) 애플리케이션 런타임 서비스

(b) 데이터 서비스

(c) 인프라와 운영
출처: Google Cloud, http://bcho.tistory.com/1108

최근에는 데이터 분석을 위해 빅데이터 저장, 분석과 머신 러닝에 따른 클라우드 서비스도 제공하고 있다(그림3). 개발자가 빅데이터 분석과 머신 러닝을 이용해 새로운 소프트웨어를 만들고 싶다면 빅데이터 분석과 머신 러닝 관련 소프트웨어는 별도로 만들어야 하는 불편이 있다. 하지만 이렇게 미리 만들어진 API를 호출해서 사용한다면 많은 시간과 부담이 줄어들 수 있다.

<그림3> 구글 클라우드 플랫폼의 데이터 & 분석 서비스
출처: Google Cloud

구글은 이러한 클라우드 서비스를 이용할 수 있는 서비스 요금을 받고 있지만 궁극적인 목적은 소프트웨어 개발자들이 구글의 클라우드 플랫폼을 사용함으로써 구글의 개발 생태계로 들어오게 하는데 있다. 전세계 개발자가 구글의 개발 생태계에 접속 하면서 클라우드 서비스 외 구글의 서비스도 사용하게 하고 빅데이터 수집과 같은 다양한 정보를 가만히 앉아서 찾아낼 수 있기 때문이다. 구글에서는 구글 생태계로 끌어들이게 하기 위해 구글만의 고품질을 제공하는 파운데이션, 구글만의 이노베이션, 전기처럼 사용한 만큼 지불하는 트루 클라우드 이커너믹스 등을 기준으로 삼고 있다.
프로젝트 제로(Project Zero)
구글에서는 소프트웨어의 버그를 악용해 컴퓨터를 감염, 기밀을 훔치고, 통신을 해킹하는 위협없이 사람들이 네트워크를 사용할 수 있어야한다고 강조한다. 인권 운동가를 공격하거나 산업 스파이로 사용되는 정교한 제로데이 공격은 여전히 큰 위협이 되고 있다고 지적했다. 구글 프로젝트 제로는 구글에서 자체적으로 운영하는 보안 팀으로, 보안 팀 자체의 프로젝트를 말한다. 2014년 7월부터 운영하기 시작했고 제로데이 공격을 막는 것이 목적이다(그림4).

<그림4> 구글 프로젝트 제로
출처: Google Project Zero

제로데이는 패치나 보안 업데이트가 없는 취약점을 공격하기 때문에 제로데이 공격을 당한 사용자는 피해가 무궁무진할 수 있다. 가정용에서 인증서나 중요 자료를 빼가거나 기업 대상으로도 막대한 위협을 주는데 이 공격이 무서운 이유는 보안 패치나 업데이트가 뜰 때까지 속수무책으로 당해야 하기 때문이다. 프로젝트 제로에서는 최근 다양해지는 보안 이슈와 제로데이 공격에 대비해 여러 최정상급 보안 전문가와 화이트 해커를 모집하고 있다.
프로젝트 제로에서는 다른 업체의 보안 연구와는 다르게 구글에서 만든 것뿐만 아니라 사람들이 많이 쓰는 프로그램에 대해서는 모두 보안 연구를 한다는 것이다. 구글의 안드로이드는 물론, 마이크로소프트, 삼성전자의 휴대폰이나 애플의 iOS까지 다루고 있다. 긴급한 보안 취약점에 대해서는 해당 업체에 관련 사실을 통보해 조치할 정도로 제로데이를 없애기 위해 노력하는 곳이다.
프로젝트 탱고(Project Tango)
구글 프로젝트 탱고는 휴대폰이나 태블릿과 같은 모바일 기기에서 공간 지각력을 갖게 하는 플랫폼으로 모바일 기기가 실내 공간의 바닥, 벽, 천장의 위치나 기기의 위치와 방향도 인식할 수 있게 해준다. 마이크로소프트 키넥트의 동작 인식과 위 리모트의 운동 인식의 두 가지 기능을 동시에 실행하는 기능을 모바일 기기에서 가능하게 한다고 보면 된다. 스마트폰을 콘솔 게임을 위한 주변기기로 사용할 수 있다.

<그림5> 구글 프로젝트 탱고
출처: Google Project Tango

요새 많이 사용되는 비콘은 실내의 위치를 대략적으로 추적하는데 비콘 앱이 설치된 스마트폰은 설치된 비콘에서 얼마나 떨어져 있는지 인식한다. 탱고는 비콘을 업그레이드한 것인데 비콘이 활용되기 어려운 환경의 실내 위치를 제공하고 정확도도 매우 높다. 탱고는 문이나 계단, 장애물을 인식하여 스마트폰의 위치를 파악할 수 있다. 따라서 원하는 지점을 대략적인 위치가 아니라 정확한 지점을 알 수 있게 해준다(그림6).

<그림6> 프로젝트 탱고 디바이스의 예
C:\Users\sds\Downloads\3.png
출처: LG 이노텍

프로젝트 탱고의 특징을 정리하면 모바일 디바이스를 이용해서 주변을 촬영하면 3D 이미지로 스캔이 가능하다는 것이다. 그림6과 같은 거리 센서나 움직임을 감지하는 카메라를 통해 사용자가 움직이는 방향과 속도를 측정할 수 있고 높낮이나 크기 등도 정확하게 계산할 수 있기 때문에 증강현실을 이용한 기술 적용에 최적화된 프로젝트라 할 수 있다.
프로젝트 아라(Project Ara)
구글의 아라 프로젝트는 ‘16년도 가을에 공식적이지는 않지만 거의 중단 상태에 놓인 프로젝트다. 이미 미디어를 통해 많이 소개된 프로젝트로 스마트폰의 부품을 모듈화 하여 사용자가 원하는 제품을 직접 만들도록 하는 조립식 스마트폰 프로젝트였다(그림7).

<그림7> 구글 프로젝트 아라
C:\Users\sds\Downloads\http-%2F%2Fwww.econovill.com%2Fnews%2Fphoto%2F201605%2F289759_103529_3112.png
출처: Wiki

밑판을 아라 프레임이라고 하는데 5.3인치로 CPU와 GPU, 안테나나 배터리, 스크린과 같은 필수 스마트폰 요소를 포함하고 후면에 6개의 슬롯을 따로 가진다. 아라는 모듈의 크기에 따라 1X2, 2X2 등의 모듈로 나뉘는데 여러 개의 모듈을 프레임에 조립해 하나의 스마트폰을 완성한다. 보통의 사용자에게는 필요성이 떨어졌겠지만 특수한 환경에서 스마트폰을 활용하는 사람에게는 유용했을 것으로 예측되었다.
프로젝트 아라가 실패한 이유는 몇가지 이유가 있는 것으로 알려졌는데 하드웨어 밸런스를 무시할 수 없었다는 것과 완성한 스마트폰의 안정성을 무시할 수 없었다는 점이 가장 크게 제시되었다. 아무래도 필요한 모듈만 조립해서 사용하면 되었기 때문에 각 모듈 간 테스트가 이루어지기 힘들기 때문일 것이다.
프로젝트 아라는 구글의 진취적인 성향이 많이 들어난 프로젝트 중의 하나인데 기업의 관점이 아닌 사용자의 관점으로 접근하고자 하는 구글의 노력이 그대로 반영되었다고 볼 수 있다. 스마트폰의 경우 전세계적으로도 몇 개 되지 않는 제조사에서 만들어지다 보니 사용자의 취향은 전혀 고려되지 않아 많은 불만들이 있었기 때문이다. IT 기술이 발전하는 요즘에는 이러한 사용자 관점의 아이디어가 새로운 서비스나 상품 탄생의 중요한 시발점이 될 수 있기 때문에 매우 의미 있는 프로젝트로 볼 수 있다.
프로젝트 룬(Project Loon)
구글에서는 아프리카와 같은 오지에도 인터넷 회선을 저렴한 가격에 공급하기 위해 풍선을 이용한 와이파이를 공급하는 프로젝트 룬을 진행중이다. 이미 ‘13년에 다양한 실험을 실시하여 의미 있는 결과를 얻은 것으로 알려졌지만 처음 시작 당시에는 많은 사람들이 무모한 도전일 뿐만 아니라 왜 저런 짓을 하는지 이해를 못하는 경우도 많았다. 하지만 지금 생각해보면 거의 모든 IT 기기들은 네트워크로 연결되어 하나의 인터넷 세상에서 구동 되어야 제 기능을 하는 경우가 많아지고 있고 새로운 사용자 확보나 끊김 없는 서비스를 위해서는 지구상 어디에도 네트워크가 연결되어 있어야 한다는 점에서 매우 중요한 프로젝트로 인식된다(그림8).

<그림8> 구글 프로젝트 룬
출처: Google Project Loon

프로젝트 룬은 지름 15미터인 풍선에 헬륨을 넣어 성층권 상공까지 올려 와이파이로 연결되도록 하고 있으며 변하는 온도에도 일정한 압력을 유지하게끔 만들어져 있다. 한번 올라간 풍선은 약 100일 정도 상공에서 머물 수 있고 태양광을 연료로 전력을 공급받는다. 인터넷 연결을 위해서는 해당 지역의 통신사가 풍선에 신호를 발사하고 풍선에서는 이 신호를 더 많은 사용자에게 확산하게 되는 개념이다.
구글에서 연구하는 Google X 프로젝트의 대표적인 프로젝트인 프로젝트 룬의 목적은 전세계 누구나 인터넷에 연결할 수 있도록 하는 것이기 때문에 이를 통해 구글은 광범위한 경제와 사회적 데이터와 이익을 제공할 것으로 예상된다.
프로젝트 윙(Project Wing)
‘14년에 본격 테스트에 들어간 프로젝트 윙은 Google X 프로젝트 중 현재 시점에 가장 주목받는 프로젝트다. 드론을 이용한 배송 서비스인 프로젝트 윙은 ‘12년에 연구가 시작되어 ‘16년에 비행 허가를 받아 사실상 무인 항공기인 드론을 통해 택배 서비스가 가능하게 되었다.

<그림9> 구글 프로젝트 윙
출처: Google Project Wing

구글은 ‘16년 미국 정부로부터 공식적으로 비행 테스트 허가를 받았는데 아마존의 드론 상품 배송 서비스인 ‘프라임 에어’에 대한 시험 비행이 허가 받지 못한 것과는 대조적이다. 아마존은 승인을 위해 영국에서 드론 시험 비행을 추진하겠다고 발표하기도 했다.
프로젝트 윙의 중요성이 강조되는 이유는 드론은 단순히 택배를 위한 기술이 아니고 자율주행 자동차가 하늘을 날아다닌다고 봐야 한다. 이를 위해서는 다양한 IT 기술이 발전되어야 하고 사람이 할 수 없는 다양한 활동이나 전략적 무기에도 활용될 수 있다. 이러한 이유로 미국 연방 정부는 전미과학재단을 통해 향후 5년간 3천 5백만 달러를 투자해 드론 연구를 지원하기로 했다.
시사점
구글이 가진 장점 중의 하나는 모든 서비스나 상품을 사용자 관점에서 고민한다는 것이다. 구글이 새로운 연구를 시작하면 크게 관심을 두지 않다가 완성되는 시점에 확인하면 당시의 IT 기술 흐름에 최적화된 경우를 많이 보이고 있다. 빅데이터나 머신 러닝, 그리고 개발자 환경을 위해 이미 오래전부터 클라우드 플랫폼을 준비하면서 구글 생태계를 준비해왔고 Google X 프로젝트의 발전을 통해 최근 4차 산업혁명에 맞는 혁신에 대비하고 있다.


참고 자료

http://www.qoll.org/watch/fTeI4Fi8E2s/1-5--.html
https://www.youtube.com/watch?v=fTeI4Fi8E2s&feature=youtu.be
http://bcho.tistory.com/1108
http://www.qoll.org/watch/fTeI4Fi8E2s/1-5--.html
https://www.slideshare.net/cjang99/google-cloud-platform-rockplace-big-data-eventmar312016
https://namu.wiki/w/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%A0%9C%EB%A1%9C
https://get.google.com/tango/
http://blog.lginnotek.com/317
https://namu.wiki/w/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%95%84%EB%9D%BC
https://brunch.co.kr/@bruncho7zx/16
https://x.company/loon/
https://x.company/projects/wing/


Keyword: software engineering, google project, project loon, project wing, project ara, dron

[217호 웹진: 인사이드이슈] 드론의 역할을 높이는 소프트웨어 기술


드론의 역할을 높이는 소프트웨어 기술
어른들의 놀이감으로 알려진 RC(Remote Control) 자동차나 비행기는 이미 오래전부터 잘 알려져 있어 드론(Drone)을 단순한 취미 생활을 위한 것으로 오해 되기 쉽다. 지금도 완성된 드론의 활용처를 무인 택배 서비스 정도로 소개되고 있는데 드론을 활용할 수 있는 곳은 매우 많을 것으로 예측되고 있다. 4차 산업혁명으로 인해 산업 간 경계가 무너지면서 국방, 행정 등에서도 드론의 역할이 필요할 것으로 보이는데 단국대학교 김규억 박사와 미국 플로리다 국제대학교의 강금석 교수와 전화 인터뷰를 통해 자세한 얘기를 해보기로 한다.

Q: 안녕하세요. 요새 드론에 대한 관심이 뜨겁습니다. TV나 영화도 드론을 이용한 경우가 많아져 더 다양한 각도로 화면이 만들어지기도 하는데 드론의 등장을 어떻게 보시나요?

드론을 이용한 무인 택배 서비스가 소개되기 전부터 TV 프로나 영화에서 드론이 찍은 화면이 많이 나왔었습니다. 그 당시에는 가격이 상상을 초월할 정도였지만 사람이 직접 찍을 수 없는 항공 시점 화면이나 위험한 각도의 화면에 주로 사용되다가 최근에 가격이 낮아지면서 많은 사람들이 사용하게 된 것으로 보입니다.

<그림1> 드론의 구조
출처: 포커스 뉴스

그런데 드론이 단순히 취미를 위한 놀이감은 아닙니다. 지금은 스마트 디바이스라고 불러도 될 정도로 다양한 기능들이 탑재되어 있습니다. 그림1에서 보는 것처럼 GPS부터 비디오 송신기, 카메라, 자이로스코프 센서 등도 달려있습니다. 보시면 아시겠지만 스마트폰하고 유사한 기술들이고 단지 비행에 필요한 프로펠러가 달려있다 정도로 봐야겠지요.

Q: 드론도 스마트 디바이스로 인식할 수 있다는 것은 그만큼 사람과 더 가까운 장비라는 것으로 이해되는데 맞나요?

네, 그렇습니다. 예전의 RC카처럼 RC를 활용한 비행기, 헬리콥터 등은 실제 탈 것들을 작게 만들고 멀리서 조정하는 개념이었습니다. 무엇을 한다는 것보다는 작게 만든 탈 것에 직접 탑승을 못하니 RC 신호로 조정하는 것이었지요. 그런데 드론은 조금 다릅니다. 지금 시중에 나와있는 것들은 대부분 네게, 여섯개의 프로펠러를 이용해 하늘을 날아다니고 거기에 카메라나 다른 장비를 달아 활용하기 때문에 드론의 역할은 단순히 하늘을 날게 한다는 정도로 오해할 수 있습니다.
중요한 점은 드론은 무인 상태로 동작한다는 점입니다. 하늘을 나는 것이 아니지요. 로봇의 경우도 드론이라고 하는 경우가 있지 않습니까? 같은 개념이라고 이해해도 틀린 말은 아닙니다. 이 말이 왜 중요하냐 하면 드론을 발전시키려고 할 때 필요한 연구가 무엇이냐로 보면 하늘을 나는 것이 목적이면 하늘을 나는 기술만 발전시키면 되지만 드론의 원래 목적인 무인에 초점을 둔다면 더 다양한 기술이 필요하다는 것이죠. 전략 무기를 예로 들면 무인 스탤스 전투기 같은 경우도 드론의 일종인데 최첨단 기술들이 집약되었습니다. 그 이유는 무인기이기 때문입니다(그림2).

<그림2> 드론의 예
C:\Users\sds\Downloads\Drone Biggest.jpg
출처: Popular Science

이러한 전략 전투기는 파일럿이 마치 전투기의 조종석에 직접 앉아 있는 것처럼 조종을 할 수 있지요. 그러기 위해서는 다양한 신호를 주고받을 수 있는 기술들이 필요하기 때문에 드론으로 인한 기술의 발전은 최첨단이라고 할 수 있는 것이죠.

Q: 드론의 다양한 기능을 직접 제어하기 위해서는 소프트웨어가 필요하겠네요?

드론이나 로봇이 사람처럼 움직이기 위해서는 반드시 소프트웨어가 필요합니다. 소프트웨어를 효율적이고 체계적으로 만들고 적용하기 위해서는 플랫폼 형태의 소프트웨어가 필요한데 다양한 곳에서 사용하게 하기 위해서는 개방형이면 더 좋겠죠. 아무래도 하드웨어가 다양하고 사용처도 많기 때문에 표준화된 소프트웨어를 위해 꼭 필요하다고 할 수 있습니다(그림3).

<그림3> 드론의 개방형 소프트웨어 플랫폼의 예
출처: ASR Micro

Q: 더 많은 기능을 제어하기 위해 소프트웨어가 필요하다는 말로 이해됩니다. 그런데 개방형 플랫폼 형태가 필요한 이유에 대해 좀 더 자세히 말씀해 주시죠.

소프트웨어 플랫폼이 필요한 이유가 같은 이유인데요. 먼저 드론은 통신 기반으로 동작하기 때문에 센서나 인식, 동작을 처리하는 단위로 소프트웨어를 만들어야 하기 때문입니다. 각 상황에 따른 소프트웨어가 존재하면 똑 같은 동작이 필요할 때 같은 소프트웨어를 사용하게 되는 것이죠. 최소 실행 단위로 단위 소프트웨어를 준비하는 것입니다. 이러한 이유로 소프트웨어 재사용이 자연스럽게 적용되는 것이죠. 재사용은 플랫폼의 가장 큰 목적 중의 하나입니다. 마지막으로 플랫폼이 구성되면 거기에 맞춰 개발 환경이 정의되는 것이죠. 개발자에 따라 여러가지 환경 구성이 나타나면 개발 생태계를 구성하기가 어렵기 때문에 플랫폼에서 일관된 개발 환경을 제공하고 그에 맞춰 개발함으로써 플랫폼에 맞는 개발 생태계가 조성됩니다. 그림4는 드론 코드 프로젝트라는 오픈소스 플랫폼입니다.

<그림4> 드론 코드 오픈소스 플랫폼
C:\Users\sds\Downloads\4 (1).png
출처: https://www.dronecode.org/dronecode-software-platform

그림4와 같은 플랫폼이 오픈소스로 공개되면서 더 다양하고 고사양의 드론 소프트웨어가 만들어지고 이렇게 만들어진 소프트웨어를 통해 드론의 성능이나 활용처가 더 다양해질 수 있는 것이지요.

Q: 드론에 소프트웨어가 필요하다는 것은 이해가 되는데 드론의 발전이 소프트웨어 발전에 미치는 영향은 없을까요?

서두에 말한 것처럼 드론은 최첨단 기술이 많이 포함되어 있습니다. 드론을 구성하는 기술을 살펴보면 비행을 하기 위해서는 속도나 기압 등의 센서 기술이 필요할 것이고, 날아다니기 위한 GPS나 관성 등의 항법 기술, 비행하면서 최적의 자세를 유지시키는 제어 기술, 마지막으로 카메라로 확인하는 영상 처리 기술 등이 필요합니다(그림5).

<그림5> 드론을 구성하는 기술
출처: www.uvify.com

그림5에서 보시는 것처럼 센서, 항법, 자세제어, 영상처리 기술 등과 같은 단위 기술에서도 소프트웨어가 필요하지만 최근에는 빅데이터 저장, 분석, 그리고 기계 학습에 따른 자율 비행 기술도 적용되는 추세입니다. 자율 비행을 위해서는 다양한 주변 정보 수집에 따른 판단 능력이 필요하기 때문에 소프트웨어가 절대적으로 필요한 상태죠. 자율 주행 자동차를 보시면 이해가 빠르실 겁니다. 이와 같이 자율 비행 기술이 적용된다면 요새 많이 관심 받는 무인 택배 서비스도 가능할 것입니다(그림6).

<그림6> 아마존 드론 택배 기술
C:\Users\sds\Downloads\2014071200210_0.jpg
출처: 아마존, 워싱턴포스트

그림6을 살펴보면 드론의 구성은 앞에서 얘기했던 수준으로 보입니다. 배송 물품을 드론에 실을 수 있는 기계적인 장치만 추가하면 됩니다. 그런데 택배를 위해서는 드론이 비행을 하면서 택배 장소도 정확히 찾아야 하고 착지를 위한 최적의 위치를 스스로 판단해야 하기 때문에 머신 러닝 기반의 소프트웨어적인 도움이 절대적으로 필요하다는 것이지요.

Q: 최고의 드론 서비스를 위해서는 최고의 소프트웨어 성능이 필요한 것 같습니다. 오늘 이야기의 마무리를 부탁드립니다.

드론에 대한 관심이 단순한 취미나 무인 택배 서비스 정도가 아니었으면 합니다. 기술 수준으로 볼 때 자율 주행 자동차나 드론의 등장이 다소 저평가 되는 경향이 있는데 이 안에는 우리가 알고있는 최첨단 기술들이 상당수 포함되어 있습니다. 왜냐하면 무인이나 자율이라는 것은 기계 스스로가 판단해서 동작해야 하기 때문입니다. 자율 주행 자동차나 드론이 스마트 디바이스라고도 불리는 이유가 그 때문입니다. 더 효율적이고 첨단화된 드론을 위해서는 최고의 기술을 움직일 수 있는 소프트웨어가 필요합니다.


Keyword: software engineering, drone, open source platform, dronecode, smart device

[217호 웹진: 공학트렌드] 클라우드 SW 사례 연구 - 아키텍처


클라우드 SW 사례 연구 - 아키텍처
소프트웨어의 환경이나 네트워크 속도가 빨라지면서 클라우드 서비스의 관심이 늘어가는 추세지만 지금까지도 시스템 구동을 위해서는 서버와 스토리지, 네트워크를 설치하는 부담을 가지고 있다. 클라우드 서비스는 이러한 부담을 줄이는 매우 효과적인 방법으로 알려져 있고 구글이나 아마존과 같은 클라우드 서비스 업체는 소프트웨어 개발 환경까지 클라우드 서비스로 제공하면서 클라우드 서비스는 더 늘어날 것으로 보인다. 소프트웨어는 어떻게 구성하느냐에 따라 성능이 큰 차이를 보이기 때문에 이번 회에서는 효과적인 소프트웨어 구성을 위한 클라우드 아키텍처에 대한 정의와 필요한 요소에 대해 살펴보기로 한다.
사례 연구 전 확인 사항

클라우드(Cloud) 서비스의 정의

클라우드 서비스는 사용하려는 기술이나 장비에 대한 정확한 지식이 없어도 사용할 수 있도록 도와준다. 그리고 하나의 시스템을 구축하여 서비스하기 위해 필요한 하드웨어, 소프트웨어, 네트워크를 모두 구입하거나 대여해서 사용하게 되는데 클라우드 서비스는 이 모든 것을 네트워크를 통해 공유 받아 사용하게 된다(그림1).

<그림1> 클라우드 서비스의 특징
출처: SW 아키텍처 컨퍼런스 – 클라우드 아키텍처 개론

그림1과 같이 클라우드 서비스는 필요한 기능이나 장비를 요구사항에 맞게 제공받고 네트워크를 통해 접속하여 물리적인 자원을 공유 받아 사용하게 된다. 필요한 만큼 사용하고 사용한 만큼 비용을 지불하면 되는데 필요하다면 탄력적으로 줄이거나 늘리기도 한다.
초기 투자 비용도 상당수 줄일 수 있기 때문에 자본 비용과 운용, 유지 부담이 적고 시스템 구축이나 소프트웨어 개발 기간이 단축되고 외부 요인에 유연하고 즉각적으로 대응할 수 있다. 또한 네트워크를 통해 협업이나 정보 공유가 용이하고 장비 분실에 따른 위험이 낮으며 사업 연속성이 높아지는 것이 장점이다.
아마존에서는 클라우드 서비스를 사용하는 이유에 대해 70대30으로 설명하고 있는데 그림2에 나타나있다. 클라우드 서비스를 설치하고 나면 자산에 대한 설치, 운영의 신경을 줄여 비즈니스에 더 집중할 수 있다는 것을 확인할 수 있다(그림3).

<그림3> 클라우드 서비스를 사용하는 이유
출처: amazon

클라우드 서비스의 종류

클라우드 서비스에는 소프트웨어를 서비스하는 SaaS와 플랫폼을 서비스하는 PaaS, 그리고 인프라를 서비스하는 IaaS로 구분할 수 있다. 이전에는 서버, 스토리지, 네트워크 등과 같이 물리적인 하드웨어 위주의 IaaS가 많았지만 최근에는 완제품의 소프트웨어를 제공하는 SaaS도 증가하고 있다. 여기에 소프트웨어를 개발하는 개발 환경 자체를 서비스하는 PaaS도 점차 늘어나고 있어 클라우드 서비스는 지속적으로 늘어날 것으로 예측되고 있다(표1).

<표1> 클라우드 서비스의 종류와 특징
출처: SERI

클라우드 서비스는 소프트웨어를 구동시키기 위해 필요한 모든 것을 제공해준다. 클라우드 개념이 시작되면서 가장 먼저 발전된 것은 하드웨어 분야인 IaaS였다. 비용이나 관리적으로 가장 많은 자원이 소요되는 분야이기도 했지만 소프트웨어나 사용처의 특성을 크게 고려하지 않아도 서비스할 수 있었기 때문이다. IaaS 이후 가상의 서버를 비롯해 다양한 플랫폼들도 직접 구매하지 않고 클라우드 서비스를 통해 활용하기 시작했고, 소프트웨어 개발과 구동 환경이 일반화 되면서 PaaS의 사용도 활발해지기 시작했다. PaaS의 사용은 플랫폼의 표준적인 모델을 제공하였고 이에 기반하여 완성된 소프트웨어를 제공하는 SaaS도 제공되기에 이르렀다(그림4).

<그림4> 클라우드 서비스의 구분
C:\Users\sds\Downloads\d-img5 (1).png
출처: LG CNS

클라우드 아키텍처의 구성

클라우드 서비스로 인해 소프트웨어 개발에 대한 새로운 패러다임이 나타나고 있다. 온-프레미스(On-premise; 그림4)에서는 물리적 서버 준비, 운영체제 설치, 서비스 배포 등에 수많은 시간이 걸렸지만 클라우드 서비스를 활용하면서 단시간에 원하는 자원을 준비하고 서비스를 배포할 수 있게 되었고 확장과 가용성을 가질 수 있게 되었다.
이러한 클라우드 서비스는 두가지 방법으로 구축할 수 있는데 사외의 클라우드 서비스를 받는 방법과 사내의 클라우드 서비스를 받는 방법이다. 사외든 사내든 사용자 입장에서는 구분 없이 클라우드 서비스를 활용할 수 있는데 예를 들어 사내의 개발 표준이나 환경, 방법 등이 사외와는 다르게 구성된다면 사내에 클라우드 서비스를 구축해서 제공하지만 개발자에게는 사외인지 사내인지 구분하기 어렵다. 따라서 서비스 종류, 방법, 용량 등을 고려해 아키텍처를 구성하는 것이 좋다. 그림5는 클라우드 아키텍처의 예를 나타낸다.

<그림5> 클라우드 아키텍처의 예
C:\Users\sds\Downloads\helloworld-1092-17.png
출처: NBP

클라우드 아키텍처 구성 프로세스

클라우드 아키텍처를 구성하기 위해서는 클라우드 서비스에 요구되는 비즈니스 관점의 요구사항과 기능을 파악하여 어떤 클라우드 서비스를 어떻게 적용할 것인지를 선택하고 적용되는 클라우드 제품과 서비스의 주요 기술 요소와 품질 요소를 분석하여 아키텍처 수립에 반영한다. 클라우드 아키텍처가 구성되면 참조 모델의 아키텍처 정의와 대안 아키텍처 검토에 따라 최종 아키텍처를 확정한다(그림6).

<그림6> 클라우드 아키텍처 구성 프로세스
C:\Users\sds\Downloads\01-cloud-07-cloud-arch.png
출처: 홍릉과학출판사 - 소프트웨어 아키텍처로의 초대
사례 연구

아마존 웹 서비스 기반 문서 중앙화 서비스

출처: AWS Summit Seoul 2016 - https://www.slideshare.net/awskorea/centralized-document-management-solution-on-aws-dukjae-lee

N사에서는 부서나 외부 업체와의 공동 작업과 모바일 스마트 워크로 업무 환경이 변하고 있고 전사 문서를 체계적으로 관리하여 컴플라이언스 문제를 줄이면서 인프라가 안정적이고 유연하게 운영되도록 클라우드 기반의 문서 중앙화 서비스를 제공한다.

<그림7> N사의 클라우드 기반의 문서 중앙화 서비스 개념
출처: AWS Summit Seoul 2016

이 서비스의 특징은 클라우드를 사용함으로써 서버나 네트워크의 설치나 유지보수가 불필요하게 되고 데이터의 백업이나 신속한 장애 대응이 용이하다고 강조하고 있다. 여기에 클라우드 사용량에 기초한 비용 산정이 효율적이고 향후 유연한 확장이 가능한 것을 얘기하고 있다.
또한 기존 아키텍처에서는 단일 데이터 센터와 네트워크 환경 의존성이 높아 비즈니스 로직이 매우 비효율적으로 움직일 수 밖에 없는 상태였다. 이 서비스에 클라우드를 적용하면 그림8의 오른쪽 그림과 같은 아키텍처로 만들 수 있다. 비즈니스 로직을 특징에 따라 구분하여 별도의 서비스 부문으로 분리함으로써 데이터베이스나 네트워크와 같은 인프라의 부담을 줄여주고 있다. 또 추가되는 비즈니스 로직이 있을 때마다 같은 형태의 서비스 부문을 추가하면 되기 때문에 일관된 관리 방법을 유지할 수 있는 장점이 있다.
<그림8> 클라우드 서비스 아키텍처로 전환
출처: www.josemhernandez.com/mentalidad-cloud

그림9는 본 사례의 서비스를 하이브리드 형태로 구성한 것인데 개인 문서와 같이 복잡도나 공유도가 높지 않은 비즈니스 부문은 기존처럼 중앙 관리 식으로, 사내외 적으로 공유도가 높고 보호가 필요한 비즈니스 부문은 클라우드 식으로 관리하면서 인프라 보안, 데이터 보호, 취약점 분석 등을 수준에 맞게 수행하고 있다.

<그림9> 클라우드 서비스 아키텍처(하이브리드)
출처: AWS Summit Seoul 2016
기대 효과와 결론
데이터, 개발 환경이나 인프라의 설치, 운영, 확장 등에서 클라우드가 차지하는 비중이 점점 더 높아지고 있다. 시스템 마다 시스템에 맞는 환경을 설치하고 운영해야 하는 불편함이 클라우드로 인해 해소될 수 있고 소프트웨어 개발자들도 개발에 더 집중할 수 있기 때문일 것이다. 또한 클라우드 서비스를 반복적으로 사용함으로써 데이터 보호와 관리, 인프라와 네트워크 구축, 그리고 보안 관리가 더 체계적으로 발전될 수 있을 것이다. 앞으로 더 나은 클라우드 서비스가 나타날 것이라는 기대가 생기는 이유다.


Keyword: software engineering, cloud service, paas, saas, iaas, amazon web service, cloud software architecture