System Compleat.

Open source serverless - what?!!

Techs


(younjin.jeong@gamil.com, 정윤진) 


이전에 AWS 에서 다닐때 했던 기획으로 10만원으로 월 10만명 사용자 받기 이런거를 해보자는 아이디어를 냈었다. 물론 아이디어를 내고 나서 퇴사하는 바람에 다른 분들이 다른 이름으로 진행 했었지만, 어쨌든 요는 무지 저렴하게 서비스를 구현해보자 라는 것이었고, 그러한 아키텍처의 중심에 '서버리스' 라고 불리는 즉 서버가 없이 구현하는 아키텍처를 그렸다. 물론 샘플로 동작하는 코드도 쓰다가 말았지만 ㅋ. 


이것이 제공하는 장점은 크게 두가지로 보는데, 하나는 '내가 관리해야 할 인프라가 별도로 없다' 라는 것이고, 두번째는 '비용이 무지막지하게 저렴하다' 라는 것이다. 그리고 이는 스타트업과 같이 사람과 돈이 귀한 조직에서 엄청난 반향을 일으키고 있다. 이 '서버리스' 아키텍처는 Lambda 를 통해 비로소 완서이 된다. 많은 사람들이 AWS 의 다른 서비스인 API Gateway 와 연동하거나, S3, Kinesis 와 같은 다른 AWS 서비스로 부터 이벤트를 받아 트리거링 되어 동작하도록 구성한다. Lambda 는 서비스가 지원하는 몇가지 언어를 사용해 코드를 만들어 올리면 이벤트에 의해 트리거 되어 60초간 해당 코드를 실행할 수 있는 일종의 플랫폼으로 보면 된다. 가격 역시 100ms 단위로 과금하기 때문에 시간당 과금하는 버추얼 머신보다 저렴하게 사용할 수 있다고 설명되는 것이 일반적이다. 



금일 소개할 내용은 바로 이 Lambda 와 유사한 형태의 도구를 오픈소스로 동작할 수 있는 새로운 것이 나타나서 포스팅한다. 단, 이것에 대해 프로덕션 도입을 하는 것은 현재로서는 추천하지 않는다. 또한 서버리스는 개인적으로 CSP 에서 제공하는 또 다른 형태의 플랫폼이고, 이것은 보통 규모의 경제를 확립한 서비스 제공자에 의해 제공이 될때 가격적 잇점이 발생할 수 있다는 점 또한 잊어서는 안된다. 많은 이들이 동의하는, 또 개인적으로도 동의하는 생각은, 서버리스 자체는 일종의 다커 신드롬과 무엇이 다른가 뭐 그런 의견이 있다. 


요약하면, 현재 인기 있거나, 인기를 얻을 가능성이 있는 도구들은 거의 대부분 인프라에 대한 별도의 작업 없이 코드를 빠르게 배포하려는 것들이며, 수많은 도구 중 하나로, 우왕 Lambda 가 오픈소스로? 이런게 나왔네 정도의 느낌으로 보시는게. 


아무리 봐도 엔터프라이즈 레벨에 당장 사용 가능한 도구는 Cloud Foundry 가 유일한듯. (기승전피) 



https://blog.leveros.com/introducing-lever-os-d10a857f210e#.dd2qiwcvz 


서버레스 컴퓨팅이 뜨거운 감자가 된지는 좀 되었다. 그리고 이게 왜 뜨거운 감자인지 알게되는건 그다지 어렵지 않다. 클라우드 기반의 애프리케이션 개발에 대한 요구는 나날이 늘어만 가고 있는데, 실제 이 요구를 수용할 수 있는 DevOps 는 시장에 많지 않다. Stack Overflow 의 설문에 의하면 개발자 대 DevOps 의 비율이 30:1 에 달한다고 한다. 다른 데이터에서는 더 심한게 70:1 이라고 말하는 곳도 있다. 어쨌든지 맞건 틀리건 간에 이런 지표들은 두 직군의 기술의 격차, 그리고 그때 그때 발생하는 운영 업무에 대한 트렌드를 보여준다고 생각한다. 


서버리스 컨셉은 이러한 문제를 해결하는데, 왜냐면 애플리케이션을 확장성 있게 개발하고 배포하는데 별도의 DevOps 가 필요 없기 때문이다. 하지만 이런 기술은 오로지 AWS, Azure, Google Cloud Platform 과 같은 클라우드 서비스 공급자에 의해서만 사용이 가능했었는데, 이는 당연하게도 해당 클라우드 서비스 공급자에 대한 락인, 그리고 로컬 머신이나 로컬 데이터센터에서는 사용할 수 없다는 문제가 있다. 


... 지금까지는. 



Lever OS 소개 


(해당 블로그에서 가져온 글이므로) 우리는 오늘 Lever OS 버전 0.1 을 발표하게 되어 매우 기쁘다. Lever OS는 오픈소스 서버리스 플랫폼으로, DevOps 가 없이도 마이크로 서비스 구조의 백엔드를 개발하고 배포할 수 있는 도구다. 이는 복잡한 인프라 구성에서 개발자들을 자유롭게 하고, 확장에 대해 투명한 뷰를 제공하는 강력한 빌딩 블록을 제공한다. 


Lever OS를 사용하면, 서버에 대해 생각할 필요가 없다. 서비스에 대해서만 생각하면 된다. Lever 는 코드를 인스턴스에 적재하여 요청에 따라 가능한 많은 노드에서 구동한다. 또한 라우팅과 로드밸런싱 트래픽을 투명하게 처리해 주기 때문에 별도의 컴파일된 리버스 프락시를 사용할 필요가 없다. 다 들어있기 때문에. 





복잡한 백엔드의 형태를 지원하기 위해 다양한 레이어를 구성하는 것도 가능하다. 각각의 서비스를 서로 다른 팀들에게 관리하도록 함으로서 다른 서비스들에 대한 서로의 책임을 한계적으로 명시할 수 있다. 또한 이 모든 것들은 내장되어 있는 RPC 시스템을 통해 연동할 수 있겠다. 



각가의 서비스는 소규모의 export function 으로 개발되어 Lever 위에 배포할 수 있다. 자바스크립트를 예로 들면, .js 파일에 export function 을 지정하고 Lever 에게 해당 자바스크립트 파일을 지정하는 형태로 동작한다. 그리고 이 function 은 서비스의 API 가 될 것이며, HTTP 를 사용하여 트리거 되어 동작한다. 


또한 Lever OS 는 오픈소스이기 때문에 이를 랩탑에서 사용할 수도 있다. 따라서 다른 서버리스 도구들과 다르게 매번 클라우드에 배포할 필요가 없어지기 때문에 로컬에서 매우 빠르게 개발 및 테스트 사이클을 사용할 수가 있다. 이렇게 개발된 코드는 일관성을 제공하기 때문에, '내 머신에서는 돌아갔는데' 타입의 버그에 대해서도 자유로울 수 있다.  



간단한 예제 코드 


"Hello, <name>!". 을 응답하는 백엔드 서비스를 만든다고 치자. Lever OS 에서는 해당 문자열을 리턴하는 JS function 을 하나 만들고 간단한 설정 파일을 구성하면 된다. 



 



배포는 다음의 커맨드로. 


$ lever deploy



이게 전부다. 이제 이 서비스를 아래의 영상에서와 같이 다양한 방법으로 호출해서 사용할 수 있다. 



본 도구에 대해서 더 궁금하다면, Lever OS 의 GitHub 페이지에 들러보면 되겠다. 


이는 Lever OS 의 최초 릴리즈다. 따라서 우리는 앞으로도 지속적으로 개선할 것이며, 이 개선에 중요한 것은 여러분의 피드백이다. 아울러 현재로서는 베타 상태이며, 문제를 경험한다면 Github 이슈 페이지에 등록해 주기 바란다. 



(younjin.jeong@gmail.com, 정윤진)