최근 Slack 의 차세대플랫폼에 대해서 튜토리얼등은 한글로 번역해서 공유드렸는데
정작 차세대 플랫폼이 뭔지에 대한 설명이 부족하지 않았나 싶습니다. 이번 기회를 빌어 저도 잘 모르는 부분을 공부해보고 공유해드리는 것으로 하겠습니다. 저도 개발자가 아니라서리.. ㅎㅎ
일단 이 플랫폼이 왜 새로 나오게 되었는지를 설명하는 부분이 필요할것 같습니다. 기존 플랫폼도 잘 쓰고 계셨겠지만, 차세대 플랫폼이 해결하고자 하는 문제는 다음과 같습니다.
Challenge
- Monolithic code
- 만들어둔 앱을 다른 팀에게 공유하기가 어려움.
- monolithic 구조로 인하여 앱의 유지보수 및 업데이트가 어려움.
- 이러한 어려움으로 인하여 빠르게 변화하는 환경에 대응하기가 어려워 기술부채가 되어 버림.
- Developer experience
- Slack 앱의 컨셉을 이해하거나, 앱을 빌드하는 과정이 쉽지 않았습니다. 코드를 어떤 호스트에서 돌릴 것이며, 이 앱들이 엔터프라이즈 환경에서 요구하는 보안 요구사항을 만족하는지에 대한 검증이 쉽지 않았습니다.
- The serverless era
- 최근에는 앱을 실행하기 위하여 Full compute Stack 을 갖추는 것보다 개발자분들로 하여금 단일 펑션의 실행에만 신경쓰도록 하게 하여주는 서버리스 환경에 대한 요구사항이 많았습니다. 따라서 앱이 실행되는 인프라에 대한 관리/배포/로드 밸런싱에 대한 고려등을 할필요 없이 앱 개발만 해도 되는 환경이 필요하게 되었습니다. (AWS 의 람다 등을 생각하시면 되겠습니다.)
따라서 이러한 문제들을 해결하기 위하여 플랫폼도 모듈러 구조의 아키텍처로의 변화가 필요하게 되었다고 보시면 되겠습니다.
모듈러 아키텍쳐
이러한 모듈러 구조가 바로 이전 튜토리얼등에서 언급되었던 펑션/트리거/워크플로 입니다.
- 펑션 – 반복적인 테스크를 위한 재사용 가능한 유닛 (예 : 티켓 생성/업데이트 등)
- Slack – 채널 생성 / 메세지 전송
- Third party system – Jira/Salesforce/Pagerduty 등
- Internal developer
- 트리거 – 워크플로를 실행하기 위한 장치
- 유저가 트리거 하거나
- 스케쥴을 걸어서 트리거 하거나
- 자동화하여 트리거 하는 방식이 있겠습니다.
- 워크플로 : 쉽게 설명드리면 펑션 + 트리거 라고 보시면 되겠습니다.
- 워크플로의 역할은 이러한 펑션들이 정해진 순서대로 실행되게 하는 것 이라고 보시면 되겠죠.
새로운 개발자 툴
좀 더 나은 개발 라이프사이클 관리와 빠른 배포를 위해서 다음과 같은 툴들을 지원합니다.
- Slack CLI
- Slack SDK
- Bolt Support – 기존 환경에서 작성된 앱에 차세대 플랫폼의 기능을 사용할 수 있게 해주는 것.
- Data stores – Slack 내의 데이터베이스라고 보심 됩니다.
- App manifest – 앱 관리 절차의 자동화
- Developer Logging – 펑션 레벨/앱 레벨의 로깅을 통하여 빠른 트러블 슈팅
Slack 에 코드를 배포하는 새로운 길
- Deployment – Slack 이 운영하는 안전한 환경위에 바로 end-to-end 로 코드를 배포
- Security and compliance – Slack 에 코드를 배포한다는 의미는 배포한 앱이 자동으로 SOC 2 나 FedRAMP 등의 인증을 준수할 수 있다는 것.
- Granular access – 앱의 파일/네트워크 접근에 대한 권한을 명시함. 예를 들어, 승인받은 도메인으로만 접근할 수 있도록 네트워크 접근을 제한
위에 까지는 개발자 분들에 대한 이야기 이고, 그럼 비개발자 분들에게 의미하는 바는 뭘까요?
일단 목표는 기존의 워크플로 빌더의 기능 확장입니다. 이 이야기는 위에서 개발자 분들이 만들어 둔 펑션을 비개발자 분들이 워크플로 빌더에서도 가져다 쓸 수 있다는 의미가 됩니다. 그래서 현재 제공하고 있는 기능을 제외하더라도 이러한 펑션을 가져다 써서, 좀 더 다양한 업무의 자동화가 가능하다고 볼 수 있겠습니다. (가져다 쓸수 있는 범위는 위에 적어둔 “펑션” 부분을 보시면 되겠습니다.)
다만 Slack 이 운영하는 인프라에 배포하는 것이 꼭 의무사항은 아닙니다. 원하시는 인프라를 사용하시면 되겠습니다.
Pricing
현재는 오픈베타 상태여서 별도의 비용을 받지 않으나, 일단 무료는 아닙니다. ㅎㅎ 별도의 SKU 로 판매될 예정입니다. 다음 링크를 참조하시면 됩니다.
저도 요새 코딩을 배워야 하나 라는 생각이 드네요. 암튼 참고 하시기 바랍니다!