Function as a Service 조사
FaaS(Serverless)란?
정말 설명하기 어렵다. 서비스가 나온지 시간이 꽤 되었지만, 지금까지 조용했던 이유는 한번에 이해 시키는 것이 거의 불가능하다는 것이다. 특히, 임원(이라 쓰고 ㅂㅅ이라 이라 읽으면 됨)들에게는 넘사벽~! :( 어째든, 잘 정리해서 보고 했더니 신선하다고 좀 더 조사하면서 간단한 PoC를 해보자고 한다.
일단, Cloud 서비스이다. 모르면, 그냥 네이버 주소 입력하시고 안녕~ ㅎㅎ 쉽게 말해서 컴퓨팅이나 서비스를 사거나 구입하지 않고 렌탈을 하거나 정액제로 일정기간 사용 가능하게 제공하는 개념이다. FaaS는 여기서 좀 더 진일보해서, 비즈니스 로직만 제작하면, 바로 서비스가 가능하다는 것이이다. 예로, F = (A+B)*C라는 기능의 서비스를 제공하고 싶다고 하면, 일반 클라우드의 경우 1) 가상 서버를 구입하, 2)OS를 설치하고 3)웹서버 엔진을 구축한 다음, 4)그 위에 함수를 코딩해야 하는데, FaaS는 마지막의 작업 만으로 서비스가 가능하다는 것이다. 시스템 구성은 모르겠고, 간단한 서버-사이드 서비스가 필요한 사람을 위한 매우 쉽게 서비스할 수 있게 제공하겠다는 것이 비즈니스 핵심인 것이다. 여.전.히 어렵다!!! ㅋ
예제
AWS 람다 서비스를 보여주기 위해 아마존에서 만든 예제이다. 이것 보고 어떤 사람은 람다 서비스가 섬네일 만드는 엔진이라고 하고… 하… 하… 하… 간단히 동작 원리는 이렇다. 사진을 클라우드 저장소에 올리면 사진이 저장된것을 인지한 람다 엔진이 실행하여, 섬네일 만드는 코드를 동작 시킨다는 것이다. 인터넷에 찾아보면, 코드랑 설명등 넘치고 넘치니 찾아서 보자.
상용 서비스 및 오픈소스
상용 서비스의 선두 주자는 단연 AWS Lambda이고, 뒤를 따라 MS Azure Function, 구글 Functions가 상용 서비스로 제공되고 있다. 작은 회사로는 Iron.io(https://www.iron.io/platform/)이 유명하다. 하지만, 돈 내고 쓰는 서비스는 그냥 동작확인 정도이고 나는 오픈 소스가 필요하다. 특히 가볍게 동작하는게 좋다. 3개월 짜리 프로젝트인데, 분석에 2달 쓸 수는 없잖아~~ ㅎㅎ
OpenWhisk
일단 믿고 쓰는 IBM(?)에서 공개한 오픈소스이다. 좋은지는 모르겠다. 초기에는 Bluemix를 쓰게 하려는 도구로 공개 한듯… (물론 블루믹스없이 동작 가능)
funktion
이단 믿고 쓰는 Red Hat에서 공개한 오픈소스이다. Fabric8의 일부로 포함되어 있다. Java로 개발 된 것 빼고는 괜찮을 것 같다. Java로 개발 된 것 빼고는….
LeverOS
얼마 전에 공개한 초기 버전의 오픈소스이다. Go언어로 되어 있고, 초기 버전이라 기능은 없지만, Go언어와 Javascript언어로 Function개발이 가능하며, 곧 Python을 지원할 예정이란다. 기능이 별로 없어 간단히 사용하고, 소스코드도 짧아서 입맛대로 수정이 가능할 듯 하다. 난 일단, 이걸로 개발 해볼 예정이다.