[현장을 가다] ‘스프링원 플랫폼 2017’에 가다

기사승인 2018.01.01  17:04:12

공유
default_news_ad1

- 정윤진 피보탈 랩 프린시플 테크놀로지스트

[컴퓨터월드]

   
▲ 정윤진 피보탈 랩 수석

정윤진 피보탈 랩 프린시플 테크놀로지스트(Pivotal Lab Principal Technologist)는 지난 15년간 시스템 소프트웨어(SW) 및 클라우드 관련 분야에서 종사하고 있으며, 국내 통신사가 제공하는 클라우드 서비스 개발의 초기 멤버로 데브옵스(DevOps)팀을 구성해 아키텍처 설계 및 서비스 배포를 위한 코드 개발에 참여한 바 있다. 이후 아마존웹서비스(AWS)에서 솔루션 아키텍트로 활동했으며, 현재는 피보탈에서 한국 및 아시아 기업들의 클라우드 기반 SW 개발 및 운영 역량 확보를 돕고 있다. <편집자 주>


“The Only Thing That Is Constant Is Change.”
- Heraclitus

자바 스프링 프레임워크 관련 세계 최대 기술 행사인 ‘스프링원 플랫폼(SpringOne Platform) 2017’이 지난달 미국 샌프란시스코 모스콘웨스트(Moscone West)에서 열렸다. 피보탈 주관으로 열린 이번 행사는 구글 클라우드, 엑센추어와 같은 티타늄 스폰서를 비롯해 델EMC, VM웨어, 다이나트레이스, 컴캐스트, 마이크로소프트(MS), 버츄스트림 등 피보탈의 고객 및 파트너사들의 후원으로 진행됐다.

3천여 명에 달하는 자바 및 스프링 개발자들은 스프링과 피보탈 클라우드 파운드리(PCF) 관련 최신 업데이트 및 변경사항, 그리고 마일스톤에 대한 정보를 얻을 수 있었으며, 현재 사용 중인 소프트웨어에 대한 피드백 역시 부스를 통해 활발하게 이뤄진 행사였다.

   
 

12월 4일 첫날은 컨퍼런스에 앞서 교육이 진행됐다. 교육은 스프링 행사답게 스프링 관련 최신 기술과 이 기술들을 배포하고 구동할 수 있는 피보탈 클라우드 파운드리 교육이 주를 이뤘다.

스프링 관련 교육으로는 ▲클라우드 환경에서 확장성과 내구성 기반의 애플리케이션 구현이 가능한 스프링 클라우드(Spring Cloud) ▲종전 스프링 프레임워크의 생산성을 더욱 높인 스프링 부트(Spring Boot) ▲마이크로서비스 애플리케이션 간, 다양한 데이터 저장소 간 데이터를 주고받으며 프로세싱할 수 있는 스프링 클라우드 데이터 플로우(Spring Cloud Data Flow) ▲스프링 클라우드 서비스의 닷넷 버전인 스틸토(Steeltoe) 등이 준비됐다.

이 교육들은 모두 아침 9시에 시작해 오후 5시에 끝나는 실습 위주의 교육으로 준비됐으며, 개발자들이 클라우드 환경에서 애플리케이션을 구현할 때 매우 유용하게 사용할 수 있는 알찬 구성이었다고 한다.

   
 

피보탈은 다양한 클라우드 서비스 공급자와 긴밀하게 협업하고 있다. 그 중 하나인 구글 클라우드에서는 스프링 개발자들을 대상으로 ‘구글 워크숍’을 준비해 ‘클라우드에서 확장성 있는 마이크로서비스를 구현하는 방법’에 대해 교육을 진행했다. 이 교육에서는 스프링 클라우드 서비스의 주요 구성요소인 ‘집킨(Zipkin)’, ‘컨피그서버(Config server)’, ‘슬루스(Sleuth)’, ‘래빗MQ(RabbitMQ)’와 같은 도구뿐만 아니라 구글의 메시징 서비스를 사용하는 방법 등이 소개됐다. 개발자들은 이런 다양한 도구를 사용해 클라우드 환경에 최적화된 ‘클라우드 네이티브’ 애플리케이션의 구현방법에 대해 체험할 수 있었다.

기술적으로 주목할 만한 세션은 바로 ‘아파치 지오드(Apache Geode)’ 프로젝트에 대한 교육이었다. 바로 아파치 그룹의 오픈소스 인큐베이팅 프로젝트인 ‘지오드(Geode)’에 대한 딥 다이브 구성이다. 원거리 네트워크(WAN) 기반에서도 인메모리 데이터 복제는 물론 일부 트랜잭션 처리도 가능케 하는 도구인 ‘지오드’에 대한 소개, 그리고 SQL/JDBC를 사용해 ‘지오드’에 데이터를 저장하고 참조하는 방법, 오픈소스 스트림 도구인 ‘카프카(Kafka)’와 분석을 위한 ‘스톰(Storm)’ 및 ‘스파크(Spark)’와 연동해 사용하는 방법 등 실시간으로 유입되는 데이터를 고속으로 처리하기 위한 기술 세션들이 진행됐다.

   
 

본격적인 세션이 진행된 5일부터는 오전에 조식, 키노트, 그리고 브레이크아웃 세션으로 일정이 진행됐다. 5, 6, 7일에 진행된 키노트에서는 쟁쟁한 인사들이 무대에 올랐다. 5일에는 피보탈의 CEO와 전체 SW개발 총괄을 맡고 있는 온시 파커리(Onsi Fakhouri), 스프링부트 프로젝트 리더인 필립 웹(Phillip Webb), 피보탈 SW엔지니어인 마두라 바베(Madhura Bhave)를 비롯, MS에서 비주얼스튜디오코드(VSC) 프로젝트를 리드하고 있는 에리히 감마(Erich Gamma)와 같은 연사들이 주요 기술 업데이트, 현대의 SW개발방향 등 스프링 행사에 걸맞은 발표를 진행했다.

특히 필립 웹은 키노트에서 ‘오직 변하지 않는 진실은 모든 것이 변할 것이라는 것’이라는 명제 아래 “비즈니스나 SW 모두 변화하는 환경에 적응해야 살아남을 수 있으며, SW는 예전처럼 동작하도록 유지해야 하는 것이 아니라, 변화하는 환경 속에서 항상 ‘쓸모’ 있어야 한다"는 내용으로 발표해 많은 청중의 고개를 끄떡이게 했다.

피보탈의 R&D 수장인 온시는 피보탈의 주요 제품에 대한 업데이트를 빠르게 소개했다. 스프링에 대한 주요 업데이트, 그리고 피보탈 클라우드 파운드리에 대한 업데이트였다. 소개된 주요 업데이트는 굉장했다. 가장 먼저 소개된 것은 스프링의 리액티브 지원에 대한 내용이었다. 사실 비동기 프로그래밍 모델이 기존 동기 방식의 블러킹 기반 프로그래밍 모델보다 여러 부분에서 효율적이라는 주장이 있어왔는데, 이 두 가지 프로그래밍 모델은 서로 완전히 다른 것이어서 개발자들에게는 신중한 선택이 필요했었다.

하지만 이번에 발표된 최신의 스프링에서는 이 두 가지 서로 다른 모델을 기존의 동기화 기반 프로그래밍 모델에 익숙한 사람에게도 손쉽게 리액티브 모델을 사용할 수 있도록 함으로써 개발자들에게 더 폭넓은 선택을 가질 수 있도록 했다. 여기에 종전 XML 기반의 다양한 도구들을 IDE에 독립적으로 스프링 개발을 지원하는 스프링 툴 4가지가 소개됐다. 피보탈은 종전의 레거시 워크로드를 스프링에서 지원하기 위해, 스프링 부트에 임베드되는 기술 스택에 IBM과 파트너십을 맺고 IBM의 ‘리버티(Liberty)’를 옵션으로 추가 가능한 지원을 발표했다.

또한, 스프링을 바탕으로 빌드된 코드를 운영하기에 꼭 알맞은 환경이 피보탈 클라우드 파운더리라고 소개하기도 했다. 피보탈 클라우드 파운더리는 보통 ‘클라우드 기반 런타임 플랫폼’으로 알려진 클라우드 애플리케이션 배포 및 운영 환경인데, 이 피보탈 클라우드 파운더리가 ‘패밀리’로 발전했다는 점이 주요한 업데이트였다.

피보탈은 구글과의 강력한 협업을 통해 쿠버네티스(Kubernetes) 엔진을 구글 외에도 다른 환경, 즉 VM웨어, AWS, MS 애저(Azure) 등에 배포할 수 있는 ‘보쉬(BOSH)’를 통해 지원하는 ‘피보탈 컨테이너 서비스(PKS)’를 발표했다. 이는 종래의 설치와 업그레이드, 그리고 확장과 축소 등의 운영 관련 업무가 쉽지 않았던 쿠버네티스의 약점을 극복하고, 이에 대한 부담을 피보탈의 도구와 엔지니어링을 통해 엔터프라이즈에 지원하는 내용을 주로 담고 있다. 따라서 종전의 피보탈 클라우드 파운더리는 ‘피보탈 애플리케이션 서비스(PAS)’로 변경되며, 여기에 PKS가 더해져 피보탈 클라우드 파운드리 제품군을 완성하고 있다는 발표였다.

또한 현재 riff로 진행되고 있는 오픈소스 함수형 서비스(Function as a Service)를 2018년 후반기까지 ‘피보탈 함수 서비스(Pivotal Function Service)’로 이 패밀리에 추가한다고 발표해 함수형 프로그래밍에 열광하는 개발자들의 요구에 부응하기로 했다고 발표했다.

   
▲ Lieutenant Colonel Enrique Oti, DIUX at SpringOne Platform 2017

6일 둘째 날에도 주목할 만한 키노트가 많았는데, 그 중 사업적으로 매우 놀라운 것은 바로 미국 공군 중령의 ‘SW제품’에 대한 발표였다. 엔리케 오티(Enrique Oti)라는 미 공군 중령이 현재 피보탈과 함께 팀을 이뤄 개발하고 있는 SW에 대한 소개는 놀라웠는데, 바로 미 공군에서 운용하는 공중 급유기와 전투기들의 급유 계획을 바로바로 만들 수 있는 SW를 개발해서 매일 수백만 갤런의 연료를 절약할 수 있었다는 것과, 전투 중 즉시 발견되는 목표물에 대해 실시간으로 타격 승인을 얻고 이 과정에서 아군이나 동맹군을 실수로 타격하지 않도록 하는 승인 체계를 갖는 애플리케이션 두 개를 소개했다.

하지만 SW보다 더 인상적이었던 것은 “군대와 같은 수직적, 그리고 체계적 조직에서도 애자일은 동작했고, 그 결과로 사용자 피드백을 바탕으로 만들어지는 SW들은 매우 놀라웠다. 군대의 개발 문화 역시 피보탈과 함께 변화할 수 있다면, 하물며 민간 기업은 어떻겠는가”라는 문화의 변화가 핵심이라는 주장이었다.

그 외에도 보잉과 같은 거대 제조업체에서도 피보탈 랩과 피보탈 클라우드 파운더리를 통해 애플리케이션 개발과 테스트, 배포를 사용해 자사의 제조 혁신을 이루고 있는 과정을 소개했다. 보잉은 자사의 수많은 SW를 개선하고 배포하는 방식을 혁신하기 위한 팀을 만들었으며, 이 팀을 피보탈과 함께 처음 만드는 과정부터 현재 어떤 일을 수행하고 있는지 등에 대한 내용을 공유했다.

또한 피보탈의 여성 엔지니어들이 코넬리아 데이비스(Cornelia Davis)를 주축으로 한 연사로 등장해 분산 컴퓨팅에 대해 필수적인 다양한 내용들을 공유했다. 이어 구글과 피보탈의 엔지니어가 함께 스프링 데모를 라이브 코딩으로 발표했는데, 내용은 스프링을 사용하게 되면 웹 플럭스와 스프링 MVC를 코드의 변화가 크게 발생하지 않더라도 내부적으로 논블러킹인 리액티브와 종전의 블러킹 I/O 모델로 전환해 동작하는 모습을 보여 큰 환영을 받았다. 현재 피보탈에 재직 중인 스프링 프레임워크의 리더 유르겐 헬러(Juergen Hoeller)의 스프링 프레임워크의 현재와 미래에 대한 발표 역시 수많은 스프링 개발자들에게 환영받았다.

   
▲ Niki Allen, Director of the Office of the CIO and Chief of Staff at Boeing, speaks at SpringOne Platform 2017

7일 키노트에서는 피보탈 클라우드 파운더리와 피보탈 랩의 다양한 협력 사례가 공유됐다. 특히 인상적이었던 것은 구글의 인프라스트럭처 부사장이 연사로 나와, 왜 피보탈과 쿠버네티스를 통해 협력하고 있는지에 대해 소개했다.

그의 말에 따르면, 수많은 사용자들이 아직 저수준(Low level) 인프라에 대한 제어 등에 아직 관심이 있고, 종전의 레거시 워크로드를 직접 수용해야 하는 요구사항 때문에 쿠버네티스가 매력적이지만 그 설치와 운용이 쉽지 않은 점으로 인해 이를 개선할 필요가 있다고 했다. 피보탈 클라우드 파운드리의 경우 고수준에서 이런 저수준의 영역을 신경 쓸 필요가 없게 하지만, 오히려 이번 쿠버네티스를 서비스 패밀리에 포함함으로써 양쪽 모두를 유연하게 지원할 수 있는 플랫폼이 됐다고 소개했다.

그 외에도 피보탈과 협력해 자사에 필요한 SW를 개발하고 또 그 개발과 운영을 유지할 수 있는 애자일팀, 그리고 플랫폼의 도입을 성공적으로 추진한 사례를 다양한 산업부문에서 발표했다. 첫날은 스코샤뱅크(Scotiabank)의 부사장인 란지 네이린(Ranji Narine)이 “현대의 은행 서비스는 IT 기반 기술을 통해 API로 제공된다”는 API 뱅킹의 중요성에 대한 설명, 그리고 피보탈과 어떻게 그 과정을 이뤄냈는지 소개했다. 또한 리버티뮤추얼(Liberty Mutual)의 수석부사장인 존 헤버런(John Heveran) 역시 금융부문에서 SW의 중요성을 최고경영진에서부터 인식하고, 이를 전사적으로 전환하는 과정을 소개하기도 했다.

스프링원 플랫폼에서 발표한 회사들은 매우 다양한데, 예를 들면 홈디포(Home Depot)와 같은 리테일, 마스터카드(Mastercard)와 같은 신용카드 업체, 가트너(Gartner), 컴캐스트(Comcast), 액센츄어 등 산업을 막론하고 다양한 회사들이 연사로 등장해 서로 자사의 디지털 전략이 어떻게 변화했는지, 그리고 이를 딜리버리할 수 있는 팀을 피보탈의 기술진 및 제품과 어떻게 함께 이뤄냈는지에 대해 발표했다.

키노트 이후에는 다양한 브레이크아웃 세션이 진행됐다. 개발자들을 위한 행사답게 아키텍처만 소개하거나 어떤 경우에 어떤 것들이 좋더라는 식의 추상적인 것들보다는 실제 데모와 라이브 코딩을 진행하는 세션들이 많아 인상적이었다. 대표적인 세션을 몇 개 꼽아보자면, JDK9 의 새로운 55가지 기능에 대한 소개 세션이 있었다. 이 세션에서는 제목과 같은 새로운 기능에 대한 소개와 표준, JVM 내부의 모습 등에 대한 소개가 Deputy의 CTO에 의해 진행되었다.

그리고 스프링 부트를 사용하는 많은 개발자들 중 스프링 부트의 내부 동작에 대해 블랙박스와 같다고 생각하는 경향이 일부 있어, 이에 대한 피드백이라도 받았는지 ‘마술같이 동작하는 스프링 부트 내부에 대해’와 같은 세션도 있었다.

스프링을 개발하고 있는 스프링팀 멤버들, 브라이언 클로젤(Brian Clozel)과 스테판 니콜(Stephane Nicoll)이 연사로 등장해 스프링 부트가 강력한 이유 중 하나인 컨벤션-오버-컨피겨레이션(convention-over-configuration) 동작의 근간을 이루는 오토컨피겨레이션(auto-configuration)에 대해 설명했다. 이 기능을 통해 스프링 부트를 사용하는 많은 개발자들은 다양한 기술 스택을 보다 편리하게 가져다 사용할 수 있으며, 이는 복잡한 종전의 프로젝트 설정이나 의존성 선언 등과 같은 다양한 ‘매번 반복되는’ 작업을 사라지게 하는 매우 중요한 부분이다.

TDD/BDD를 생명처럼 여기는 피보탈랩에서 테스트는 매우 중요한 부분이다. 스프링에서 사용할 수 있는 J유닛(JUnit) 5에 대한 세션도 인기 있는 세션이었다. 스위프트마인드(Swiftmind)의 공동 사장인 샘 브래넌(Sam Brannen)이 발표해줬다.

키노트에도 등장했던 구글의 여성 엔지니어 메간 켈랜드(Meaghan Kjelland)는 스프링 개발자에게 쿠버네티스가 어떤 도움을 줄 수 있는지 기술 세션을 진행했다. 쿠버네티스 환경에서 스프링 애플리케이션을 어떻게 개발해서 배포하고, 확장할 수 있는지가 주요한 주제였다. 이는 지속적 통합(Continuous Integration), 지속적 전달(Continuous Delivery)을 포함한 데브옵스들이 좋아할만한 주제로, 실제 많은 사업장에서 인프라 관련 업무를 진행하는 엔지니어들에게 많은 관심을 받았다.

   
▲ 샌프란시스코에 위치한 피보탈 랩

스프링 행사라고 해서 스프링 관련 이야기만 있었던 것은 아니다. 캡제미나이(Capgemini) 에서는 종전의 닷넷과 닷넷 애플리케이션을 피보탈 클라우드 파운드리로 어떻게 마이그레이션 했는지에 대해 소개했다. 소개된 내용은 기존의 닷넷과 닷넷 코어가 마이그레이션 측면에서 서로 어떻게 다른지, 여기에 캡제미나이의 팀들은 어떻게 일했는지, 피보탈 클라우드 파운드리에 어떻게 마이그레이션했는지에 대해 슬라이드와 데모를 통해 소개했다.

구글과 피보탈의 협력 발표도 눈에 띄었다. 몇 가지 세션 중 스프링과 구글의 머신러닝에 대한 결합에 대한 소개가 있었다. 이는 피보탈 클라우드 파운드리에 배포된 스프링 애플리케이션이 구글 클라우드의 머신러닝 API에 접근해 연동하는 방법, 그리고 이와 같은 애플리케이션이 제공하는 가치에 대해 소개했다.

이 같은 다양한 세션의 주제에 대해서는 스프링원플랫폼 홈페이지(링크)를 통해 확인 가능하며, 모든 세션은 동영상으로 녹화돼 제공되고 있으므로 관심있는 주제가 있다면 살펴보는 것을 권고한다.

   
 

이번 스프링원 플랫폼 행사가 갖는 의미는 여러 가지가 있다. 첫째로 스프링 프레임워크 및 관련 스프링 프로젝트들이 매우 빠르게 발전하고 있다는 점이다. 이것들은 모두 클라우드 시대를 넘어 애플리케이션에 요구되는 고가용성, 확장성 등이 빠른 생산성과 결합할 수 있도록 한다.

또한 개발자에게 다양한 클라우드 도구를 선택해 사용할 수 있는 ‘선택지’를 주려는 노력이 돋보였다는 점이다. 동기와 비동기는 아마도 개발부분에 있어 영원한 숙제겠지만, 이번 버전의 스프링에서는 스프링에 친숙한 이들에게 최신의 기술을 종전의 프로그래밍 모델을 사용해 사용할 수 있는 선택을 제공함으로서 스프링 개발자들에게 열렬한 환영을 받았던 것이다.

두 번째로 피보탈의 플랫폼 전략에 관한 부분이다. 이들은 종전의 ‘이것 아니면 저것’이라는 선택, 그리고 피보탈 클라우드 파운더리를 동작해야 하는 환경이 다소 무거웠던 점, 이런 것들을 적극 반영해 다양한 업데이트 및 제품의 라인업을 새로 구성했다. 이 새로 구성된 라인업은 종전의 피보탈 클라우드 파운더리의 사용성에 더해 매니지드 쿠버네티스를 제품군에 포함하고, 장기적으로는 함수형 서비스를 온프레미스 및 퍼블릭 클라우드에서 동일한 방법으로 구동할 수 있는 등의 새로운 포트폴리오를 제시했다.

이는 수많은 개발자들과 기업들에게 환영받았으며, 그 이유는 종전의 레거시 형태의 워크로드, 예를 들면 웹애플리케이션서버(WAS)나 다른 에이전트 등을 반드시 함께 사용해야 하는 레거시 환경이나, 애플리케이션을 신규 또는 마이크로서비스 등의 클라우드에 최적화된 애플리케이션으로 개선 후 운용할 수 있는 피보탈 애플리케이션 서비스 모두에 유연한 선택지가 생겼기 때문이다.

세 번째로 굉장히 다양한 협력 관계다. 스프링은 사실 그 자체로 굉장히 많은, 그리고 서로 다른 기술 스택들에 대한 지원을 포함하고 있다. 이는 스프링을 개발에 참여하고 있는 수많은 피보탈의 개발자들이 피보탈의 제품만 지원하도록 하는 것이 아니라, 현재 시장에서 많이 사용되고 있는, 그리고 앞으로 사용될 가능성이 높은 다양한 기술들을 가급적 최대한 지원하고자 하는 노력이 있다는 점이 주목할 만하다.

이것은 스프링팀의 선택이 스프링 기술 생태계의 생존에도 중요하지만, 이 생존여부가 바로 개발자들로부터의 선택에 달렸다는 서로의 관계 때문에 중요하다. 개발자들은 더 많은 기술 스택을 더 편리하게, 그리고 익숙한 방법으로 사용할 수 있으며, 이를 통해 스프링은 더 많은 사용자층을 확보할 수 있도록 자바 진영의 강력한 도구가 될 수 있는 것이다.

이번 행사에 한국에서도 많은 참석자가 있었다. 50여 명의 한국 개발자들은 오픈소스 개발 및 애자일/린의 성지인 샌프란시스코 피보탈 랩에 방문해 CEO인 롭 미등을 만나 다양한 이야기를 들으며 즐거운 시간을 갖기도 했다.

먼 이국땅에서 진행되는 행사에 참석한다는 것이 쉬운 일은 아니지만, 우리가 매일 사용하는 기술을 개발하고 리드하는 사람들을 눈앞에서 목격하고, 그들의 목소리를 직접 듣고, 필요할 때 질문을 할 수 있는 것은 사실 굉장한 기회인 것이다. 이뿐만 아니라 현장에서 다양한 업체와 개발자들의 경험에 대해 듣고, 그들이 어떤 어려움을 어떻게 해결했는지 등의 경험을 공유하는 자리는 아마 더 없이 값진 경험이 됐을 것이다.

스프링원 플랫폼 2017은 자바9의 등장과 함께 스프링 프레임워크 5, 그리고 피보탈 클라우드 파운드리가 주요 기술로 소개되고 공유된 행사였다. 물론 그 이외에도 개발 방법, 배포와 같은 다양한 주제들 역시 존재했고, 대부분 클라우드에 어떻게 자사의 서비스를, 즉 자사만을 위한 ‘커스텀 애플리케이션’을 빠르게 개발해 안전하게 배포하고 운영하는지에 대한 내용들이었다.

   
 

우리가 매일 사용하는 스마트폰은 하루가 멀다 하고 새로운 모델이 등장한다. 그리고 이 스마트폰에서 구동되는 다양한 운영환경이나 애플리케이션 역시 하루가 멀다 하고 변경되고 있다. 이런 변화하는 환경 속에 변하지 않는 서비스를 종전과 다름없이 운영하는데 집중한다면, 아마도 근 미래에는 더 이상 필요가 없는, 또는 인기가 없는 서비스로 전락할 수 있을 것이다.

따라서 필 웹이 이야기했던 바와 같이, 이렇게 변화하는 환경 속에 쓸모 있는 서비스 애플리케이션을 개발하기 위한 노력이 그 어느 때보다 필요한 순간이다. 기업의 핵심 사업이 SW로 고객과 만나고 있는 지금 이 시대에 스프링원 플랫폼이 자바 진영에 사업적, 기술적 선구자 역할을 할 것이라고 기대해본다.

정윤진 yjeong@pivotal.io

<저작권자 © 아이티데일리 무단전재 및 재배포금지>
default_news_ad4
default_side_ad1

인기기사

default_side_ad2

포토

1 2 3
set_P1
default_side_ad3

섹션별 인기기사 및 최근기사

default_setNet2
default_bottom
#top