회사에서.. OpenWhisk 에 대해서 듣게 되었고.. 찾아봤던 자료를 기억해 둡니다.
apache OpenWhisk
- 이벤트에 대해 함수를 실행시키는 오픈소스 클라우드 서버리스 플랫폼으로, 개발자를 코드를 실행하는 컨테이너의 관리나 운영으로부터 자유롭게 해 준다.
Github 에 공개된지 1년 반 만에 400여번 포크되고, 1100여개의 이슈와 1500여개의 PR (Pull requests) 이 올라오는 활기찬 오픈소스 프로젝트이다.
IBM 의 서버리스 서비스를 위한 내부 프로젝트로 초기 개발 후 2016년 2월 오픈소스로 공개되었고, 11월부터 아파치 인큐베이션을 시작하였습니다.
* 서버리스
- 서버 없이 모든 규모의 이벤트에 대해 코드를 실행하여 응답하는 클라우드 컴퓨팅 방식.
현재 서버리스 플랫폼을 지원현황은 아래와 같습니다.
-그중 IBM OpenWhisk 가 오픈소스화 되어 있어 설치해 볼수 있습니다.
설치
- https://github.com/apache/incubator-openwhisk 부분을 참고 하시면 됩니다.
그 중에, Quick-start 방식으로 설치하면, 아래와 같이 간단하게 설치됩니다.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OpenWhisk 의 대략적인 구성 및 service flow 아래와 같습니다.
구성
workflow
실행방법
- wsk 라는 CLI 툴을 설치 후 command 실행.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
고민해야 할 사항들..
1. Docker 데몬의 성능이슈.
- Docker API의 처리 속도 느림
- 잦은 API 호출 및 동시 호출 (X)
OpenWhisk의 Invoker를통해 컨테이너의 생성/삭제 시 시간 차이로 인한 Bottleneck 발생 가능성 있음.
2. 빠른 응답처리를 위한 개선 .
- 데이터베이스와 컨테이너를 캐시하여 액션의 응답시간을 꽤 빠르게 (그다지 느리지 않게) 하는 방법
- 웜업을 통한 응답 속도 개선. 또는 컨테이너 재사용 방안 등등 ..
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
서버리스 사용 예시..
- 이벤트 발생시에만 비용처리.
서버리스 적용 후...
서버리스의 도입시 검토해야될 사항은 . 아래와 같이 복잡도가 올라가기때문에, 함수 단위 서비스 관리를 위한 운영툴에 대한 고민이 필요 해 보입니다.