본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

2018년 10월 30일                

ⓒ 지디넷코리아, 임도영 IBM 클라우드 솔루셔닝 센터(아태지역) 클라우드 네이티브 아키텍트

 

개발자들은 점점 더 클라우드 환경에 익숙해져 가고 있다. 또 많이 받는 요구사항은 클라우드 벤더에 락인(Lock-in) 되지 않으면서 클라우드형 애플리케이션으로 개발 해달라는 것이다. 심지어 퍼블릭 클라우드가 아니라 프라이빗 클라우드환경 또는 온프레미스 환경에서도 운영할 수 있는 환경에 문제가 없도록 해달라고 요청 받는다.

어떻게 이를 만족시킬수있을까? 기존처럼 자바 애플리케이션만으론 그 해답을 얻기 어렵다. 최근 나온 기술을 잘 활용해 본다면, 클라우드 인프라환경으로는 쿠버네티스를 적극 활용하고, 개발자는 클라우드 네이티브 애플리케이션을 구현하면 된다. 클라우드 네이티브 애플리케이션을 구현하기 위해서는 쿠버네티스 기반의 컨테이너 및 마이크로서비스 아키텍처를 지향해야 한다.

클라우드 네이티브 애플리케이션이란

클라우드 네이티브 애플리케이션은 한마디로 클라우드환경에 디플로이하고 확장하기 쉬운 클라우드형 애플리케이션이다. 클라우드형 애플리케이션에 적합한 애플리케이션이 갖게 되는 특징은 4가지로 요약할 수 있다.

첫째, 마이크로서비스아키텍처다. 이는 더 작은 독립적인 서비스들로부터 복잡한 애플리케이션을 구축하는 접근방법이다. 가벼운 API를 사용해 서로 다른 서비스와 통신을 하고 개발팀 또는 IT 팀에 의해 독립적으로 운영 및 확장되고 진화할 수 있도록 만들어 진다

둘째, 컨테이너화(Containerization)다. 컨테이너 기술은 가볍고, 쉬운 이식성(Portability)이 가능한 가상화 솔루션이다. 앞세대의 가상화 기술과 비교해 컨테이너는 프로비젼이 더 빠르고 자원 이용율도 더 효과적이다. 마이크로서비스를 구축하기 위해 컨테이너로 해야할 필요는 없지만, 컨테이너가 개발자들이 수동 코딩 간섭 없이도 그들의 애플리케이션을 다른 클라우드환경으로 신뢰감 있게 포팅할 수 있도록 지원한다.

셋째, 데브옵스(DevOps)로의 자동화다. 툴을 활용해 개발과 IT 작업이 협업돼 애플리케이션 빌드와 구현 및 관리가 진행된다. 이 접근방법으로 휴먼에러나 다운타임이 일어날 수 있는 수동작업 및 비공동작업을 감소 시킨다

넷째, 신속한 변환(Agile Transformation)이다. 엔터프라이즈 클라우드 변환은 진정한 멀티클라우드, 클라우드 네이티브 개발 패러다임으로 진화해 시장파괴가 가능할 수 있도록 해야한다. 클라우드 네이티브가 성공적이고 지속적으로 나아가기 위해서는 사람, 프로세스, 기술변환이 필요하다.

클라우드에 적합한 형태인 클라우드 네이티브 애플리케이션의 4가지 특징중 직접적으로 툴과 관련된 것은 데브옵스 환경과 연관이 있다. 자동화 및 다양한 SaaS 환경들과 연계하기 위해 Continuous Delivery, Availability Monitoring, Activity Tracker 등 다양한 개발자 도구의 메뉴를 제공하는 IBM 클라우드의 예를 통해 마이크로서비스 아키텍처 기반으로 클라우드 네이티브 애플리케이션의 개발이외에 많은 부분이 간과 되고있는 데브옵스를 이용한 자동화의 예를 소개하면 다음과 같다.

클라우드 네이티브 애플리케이션 구현

첫째, 데브옵스로의 자동화 환경을 위한 오픈툴체인(openToolchain)을 활용한 개발 및 디플로이 모습의 예: 오픈소스인 오픈툴 체인을 활용해 개발자와 관리자간 투명하고 효율적인 커뮤니케이션을 제공할 수 있다. 현재 이슈, 깃(git) 소스코드, 빌드 및 디플로이 하는 파이프라인 등을 구성할 수 있다.

사례에서 보는 바와 같이 환경에서 일어나는 이슈들을 로깅하고, 소스코드관리를 하고 디버그(debug)등을 슬랙채널 및 모바일 디바이스를 통해 공유할 수 있다.

툴체인에서 볼 수 있듯이 깃 이슈(git issues)나 깃 저장소, 애플리케이션 디플로이(deploy) 상태를 확인할 수 있는 딜리버리 파이프라인(delivery pipeline) , 또 서드파티 서비스인 페이저 듀티(pager duty:정책을 설정해 전세계 문자 보내기), 슬랙채널 등을 사용하는 유틸리티를 한눈에 볼 수 있다.

둘째, 컨티뉴어스 딜리버리(Continuous Delivery) 구현 예: 빌드 및 디플로이 환경에 대한 투명한 환경을 공유해 개발자 및 운영자들간의 원활한 커뮤니케이션을 제공하고 이를기반으로 이슈를 해결할 수 있다.

기능으로는 소스를 활용한 컴파일, 패키징 및 시스템 배치까지 자동화하고 로그를 채널에 공개함으로써 빠른 이슈 해결을 가져올 수있다.

소스빌드, 디플로이에 대한 상태를 공유할 수 있도록 하며 여러 단계를 따로따로 구성하는 것을 시각화해 이슈를찾아내기 쉽게 되어있다

■진화하는 클라우드 기술...4차산업혁명 실감

클라우드에 의한 환경변화는 클라우드네이티브 애플리케이션을 가져왔고, 클라우드 네이티브 애플리케이션의 마이크로서비스 아키텍처, 애플리케이션의 컨테이너화, 데브옵스를 통한 자동화, 지속적인 신속한 변환으로 빠르게 변화하는 세상에 대처할 수 있도록 한다.

또 소프트웨어 개발과 관리의 생산성을 높이기 위한 자동화가 더욱 요구되면서 클라우드 네이티브 애플리케이션에 대한 관심이 더 커져가고 있다. 이제 개발환경도 쉽게 클라우드에서 셋업되고 구현할 수 있게 됐다. 소프트웨어를 설치하지 않아도 바로 사용하고 보안을 설정할 수 있게 됐다.

이를통해 향후 소프트웨어 개발은 더욱 가속화 될 것이고 이에 맞춤화된 다양한 프로그램에 대한 기술 습득이 강조될 것이다. 점점 진화하는 클라우드 기술 발전을 통해 4차산업혁명이 성큼 왔음을 느낄 수 있다.

 


※ 본 내용은 (주)메가뉴스(http://www.zdnet.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ 지디넷코리아. 무단전재 및 재배포 금지

 

[원문출처 : http://www.zdnet.co.kr/column/column_view.asp?artice_id=20181029223535&type=det&re=zdk]

맨 위로
맨 위로