이 페이지에서는 Google Chat 앱을 만드는 데 사용되는 일반적인 서비스 아키텍처 접근 방식을 설명합니다. Google Chat에 통합하려는 기존 앱이 있는 경우 기존 구현을 사용하거나 조정할 수 있습니다. 새 Chat 앱을 빌드하는 경우 이 페이지에서는 사용 사례에 적합한 아키텍처를 선택하는 데 도움이 되는 유사한 정보를 여러 가지 방법으로 제공합니다.
- 개요 표를 참고하세요.
- 각 아키텍처 스타일의 요약을 참고하세요.
- Chat 앱 로직 요약을 참고하세요.
- Chat 앱 대화 패턴별 요약을 확인하세요.
기능 및 기능별 개요
다음 표에는 Chat 앱의 주요 기능과 권장되는 (
) 서비스 아키텍처 스타일이 나와 있습니다. 경우에 따라 이러한 기능으로 다른 아키텍처 스타일을 개발할 수 있지만 다른 스타일 ( )만큼 사용 사례에 적합하지 않을 수 있습니다.특징 및 기능 |
웹 또는 HTTP 서비스 |
Pub/Sub |
웹훅 |
Apps Script |
AppSheet |
Dialogflow |
스크립트 |
---|---|---|---|---|---|---|---|
의도한 시청자층 |
|||||||
내 팀 |
|||||||
내 조직 |
|||||||
대중 |
|||||||
사용자 상호작용 |
|||||||
자연어 처리 사용 |
|||||||
메시지 패턴 |
|||||||
동기식 메시지 보내고 받기 |
|||||||
동기식 메시지 전송 및 수신, 비동기식 메시지 전송 |
|||||||
비동기 메시지만 전송 |
|||||||
외부 시스템에서 단일 Chat 스페이스로 메시지 전송 |
|||||||
다른 서비스 및 시스템에 액세스 |
|||||||
다른 Google 서비스와 통합 |
|||||||
방화벽 뒤에서 통신 |
|||||||
Chat 이벤트 쿼리 또는 구독 |
|||||||
코딩 및 배포 스타일 |
|||||||
코딩 없이 개발 |
|||||||
로우 코드로 개발 |
|||||||
원하는 프로그래밍 언어로 개발 |
|||||||
간소화된 DevOps |
|||||||
완벽한 DevOps 및 CI/CD 관리 |
서비스 아키텍처 스타일
이 섹션에서는 Chat 앱을 만드는 데 사용되는 가장 일반적인 아키텍처 접근 방식을 설명합니다.
웹 또는 HTTP 서비스
웹 또는 HTTP 서비스는 개발자가 공개 채팅 앱을 빌드할 때 가장 유연성을 제공하므로 가장 일반적으로 배포되는 아키텍처입니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱이 Google Workspace Marketplace에 공개적으로 배포됩니다.
- Chat 앱은 동기식 메시지 전송 및 수신, 비동기식 메시지 전송, 외부 시스템에서 메시지 전송 등 모든 메시지 패턴을 전송하고 수신할 수 있습니다.
- Chat 앱은 모든 프로그래밍 언어로 개발할 수 있습니다.
- Chat 앱에는 완전한 DevOps 및 CI/CD 관리가 필요합니다.
- Chat 앱 서비스는 클라우드 또는 온프레미스 서버에 구현됩니다.
이 설계에서는 다음 다이어그램과 같이 HTTP를 사용하여 원격 서비스와 통합되도록 Chat을 구성합니다.
위의 다이어그램에서 HTTP Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 Chat 스페이스에서 Chat 앱으로 메시지를 보냅니다.
- HTTP 요청은 Chat 앱 로직이 포함된 클라우드 또는 온프레미스 시스템인 웹 서버로 전송됩니다.
- 원하는 경우 Chat 앱 로직은 프로젝트 관리 시스템 또는 티켓 판매 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
- 웹 서버가 Chat의 Chat 앱 서비스로 HTTP 응답을 다시 전송합니다.
- 응답이 사용자에게 전송됩니다.
- 원하는 경우 Chat 앱에서 Chat API를 호출하여 메시지를 비동기식으로 게시하거나 다른 작업을 실행할 수 있습니다.
이 아키텍처는 이러한 채팅 앱을 다양한 프로그래밍 언어를 사용하여 설계할 수 있으므로 시스템에 이미 있는 기존 라이브러리와 구성요소를 유연하게 사용할 수 있도록 지원합니다. 이 아키텍처를 구현하는 방법에는 여러 가지가 있습니다. Google Cloud에서는 Cloud Functions, Cloud Run, App Engine을 사용할 수 있습니다. 시작하려면 Google Chat 앱 빌드를 참고하세요.
Pub/Sub
Chat 앱이 방화벽 뒤에 구현된 경우 Chat에서 HTTP를 호출할 수 없습니다. 한 가지 방법은 Pub/Sub를 사용하여 Chat 앱 구현이 Chat의 메시지를 전달하는 주제를 구독하도록 하는 것입니다. Pub/Sub는 메시지를 생성하는 서비스를 해당 메시지를 처리하는 서비스에서 분리하는 비동기 메시징 서비스입니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱은 방화벽 뒤에 빌드됩니다.
- Chat 앱이 Chat 스페이스에 관한 이벤트를 수신합니다.
- Chat 앱이 조직에 배포됩니다.
- Chat 앱은 동기 메시지를 주고받을 수 있으며 비동기 메시지를 보낼 수 있습니다.
- Chat 앱은 모든 프로그래밍 언어로 개발할 수 있습니다.
- Chat 앱에는 완전한 DevOps 및 CI/CD 관리가 필요합니다.
다음 다이어그램은 Pub/Sub으로 빌드된 Chat 앱의 아키텍처를 보여줍니다.
위의 다이어그램에서 Pub/Sub 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
사용자가 Chat에서 채팅 메시지 또는 Chat 스페이스를 통해 Chat 앱에 메시지를 보내거나, Chat 앱에 활성 구독이 있는 Chat 스페이스에서 이벤트가 발생합니다.
채팅에서 메시지를 Pub/Sub 주제에 전송합니다.
Chat 앱 로직이 포함된 클라우드 또는 온프레미스 시스템인 애플리케이션 서버는 방화벽을 통해 메시지를 수신하기 위해 Pub/Sub 주제를 구독합니다.
원하는 경우 Chat 앱에서 Chat API를 호출하여 메시지를 비동기식으로 게시하거나 다른 작업을 실행할 수 있습니다.
시작하려면 Pub/Sub를 Chat 앱의 엔드포인트로 사용을 참고하세요.
웹훅
Chat webhook URL 호출을 사용하여 특정 Chat 스페이스에만 메시지를 보낼 수 있는 Chat 앱을 만들 수 있습니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱이 팀에 배포됩니다.
- Chat 앱이 외부 시스템의 메시지를 단일 Chat 스페이스로 전송합니다.
이 아키텍처를 사용하면 Chat 앱이 특정 Chat 스페이스로 제한되며 다음 다이어그램과 같이 사용자 상호작용이 허용되지 않습니다.
위 다이어그램에서 Chat 앱에는 다음과 같은 정보 흐름이 있습니다.
- Chat 앱 로직은 프로젝트 관리 시스템 또는 티켓 판매 도구와 같은 외부 서드 파티 서비스에서 정보를 수신합니다.
- Chat 앱 로직은 특정 Chat 스페이스에 웹훅 URL을 사용하여 메시지를 보낼 수 있는 클라우드 또는 온프레미스 시스템에 호스팅됩니다.
- 사용자는 해당 Chat 스페이스에서 Chat 앱의 메시지를 받을 수 있지만 Chat 앱과 상호작용할 수는 없습니다.
이 유형의 Chat 앱은 다른 Chat 스페이스 또는 다른 팀과 공유할 수 없으며 Google Workspace Marketplace에 게시할 수 없습니다. 수신 Webhook은 Chat 앱에서 알림이나 상태를 보고하거나 일부 유형의 Chat 앱 프로토타입을 만드는 데 권장됩니다.
시작하려면 웹훅을 사용하여 Chat에 메시지 보내기를 참고하세요.
Apps Script
Chat 앱 로직을 JavaScript로 완전히 만들 수 있습니다. Google Apps Script는 Chat 앱을 위한 로우 코드 개발 플랫폼입니다. Apps Script는 사용자 인증을 위한 승인 흐름과 OAuth 2.0 토큰을 처리합니다. Apps Script를 사용하여 공개 Chat 앱을 빌드할 수 있지만 일일 할당량 및 한도로 인해 권장되지 않습니다.
이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱이 팀 또는 조직에 배포됩니다.
- Chat 앱은 동기식 메시지 전송 및 수신, 비동기식 메시지 전송, 외부 시스템에서 메시지 전송 등 모든 메시지 패턴을 전송하고 수신할 수 있습니다.
- Chat 앱에는 간소화된 DevOps 관리가 필요합니다.
이 아키텍처는 다음 다이어그램과 같이 Google Sheets, Google Slides, Google Calendar, Google Drive, Google 지도, YouTube와 같은 다른 Google Workspace 및 Google 서비스와도 통합되는 Chat 앱에 유용합니다.
위 다이어그램에서 Apps Script Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 채팅 메시지 또는 Chat 스페이스를 통해 Chat 앱에 메시지를 보냅니다.
- Google Cloud에 있는 Apps Script에 구현된 Chat 앱 로직이 메시지를 수신합니다.
- 원하는 경우 Chat 앱 로직을 Calendar 또는 Sheets와 같은 Google Workspace 서비스 또는 Google 지도 또는 YouTube와 같은 다른 Google 서비스와 통합할 수 있습니다.
- Chat 앱 로직은 Chat의 Chat 앱 서비스로 응답을 다시 전송합니다.
- 응답이 사용자에게 전송됩니다.
시작하려면 Apps Script로 Chat 앱 빌드를 참고하세요.
AppSheet
AppSheet를 사용하여 코딩 없이 도메인 공유 Chat 앱을 만들 수 있습니다. 자동 구성 모드를 사용하고 템플릿에 따라 일반적인 Chat 앱 작업을 빌드하여 개발 프로세스를 간소화할 수 있습니다. 하지만 일부 AppSheet 웹 앱 기능은 Chat 앱에서 사용할 수 없습니다.
이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱이 나와 내 팀에 배포됩니다.
- Chat 앱은 동기 메시지를 주고받을 수 있으며 비동기 메시지를 보낼 수 있습니다.
- Chat 앱에는 간소화된 DevOps 관리가 필요합니다.
다음 다이어그램은 AppSheet로 빌드된 Chat 앱의 아키텍처를 보여줍니다.
위 다이어그램에서 AppSheet Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 Chat에서 채팅 메시지 또는 Chat 스페이스를 통해 Chat 앱에 메시지를 보냅니다.
- Google Cloud에 있는 AppSheet에 구현된 Chat 앱 로직이 메시지를 수신합니다.
- 원하는 경우 Chat 앱 로직을 Apps Script 또는 Google Sheets와 같은 Google Workspace 서비스와 통합할 수 있습니다.
- Chat 앱 로직은 Chat의 Chat 앱 서비스로 응답을 다시 전송합니다.
- 응답이 사용자에게 전송됩니다.
시작하려면 AppSheet로 Chat 앱 빌드하기를 참고하세요.
Dialogflow
자동 대화 및 동적 응답을 위한 자연어 플랫폼인 Dialogflow를 사용하여 Chat 앱을 만들 수 있습니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱은 동기 메시지를 주고받을 수 있습니다.
- Chat 앱은 자연어 처리를 사용하여 사용자에게 응답하고 상호작용합니다.
다음 다이어그램은 Dialogflow로 빌드된 채팅 앱의 아키텍처를 보여줍니다.
위의 다이어그램에서 Dialogflow Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 Chat에서 채팅 메시지 또는 Chat 스페이스를 통해 Chat 앱에 메시지를 보냅니다.
- Google Cloud에 있는 Dialogflow 가상 에이전트는 메시지를 수신하고 처리하여 응답을 생성합니다.
- 원하는 경우 Dialogflow webhook을 사용하여 Dialogflow 에이전트가 프로젝트 관리 시스템 또는 티켓 판매 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
- Dialogflow 에이전트는 Chat의 Chat 앱 서비스로 응답을 다시 보냅니다.
- 응답이 Chat 스페이스로 전송됩니다.
시작하려면 Dialogflow Google Chat 앱 빌드를 참고하세요.
명령줄 애플리케이션 또는 스크립트
사용자가 Chat에서 Chat 앱을 직접 호출하거나 응답하도록 허용하지 않고도 Chat에 메시지를 보내거나 스페이스 만들기, 스페이스 회원 관리와 같은 다른 작업을 실행하는 명령줄 애플리케이션 또는 스크립트를 만들 수 있습니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.
- Chat 앱은 모든 프로그래밍 언어로 개발할 수 있습니다.
- Chat 앱은 비동기 메시지만 보낼 수 있습니다.
다음 다이어그램은 이러한 아키텍처를 보여줍니다.
위 다이어그램에서 Chat 앱에는 다음과 같은 정보 흐름이 있습니다.
- Chat 앱은 Chat API를 호출하여 메시지를 보내거나 다른 작업을 실행합니다.
- 채팅에서 요청된 작업을 실행합니다.
- 원하는 경우 Chat 앱이 CLI에 확인 메시지를 출력합니다.
Chat 앱 로직 구현
Chat은 Chat 앱 로직을 구현하는 방식을 제한하지 않습니다. 고정 문법 명령 파서를 만들거나, 고급 AI 및 언어 처리 라이브러리 또는 서비스를 사용하거나, 이벤트를 구독하고 응답하거나, 특정 목표에 적합한 다른 작업을 할 수 있습니다.
사용자 상호작용 처리
Chat 앱은 여러 가지 방법으로 사용자 상호작용을 수신하고 응답할 수 있습니다. 사용자 상호작용은 사용자가 채팅 앱을 호출하거나 상호작용하기 위해 취하는 모든 작업입니다.
명령어 파서
명령어 기반 채팅 앱은 채팅 앱 상호작용 이벤트의 페이로드를 검사한 후 이 콘텐츠에서 명령어와 매개변수를 추출합니다. 예를 들어 Chat 사용자와 상호작용하기 위한 슬래시 명령어 설정하기를 참고하세요.
다른 접근 방식은 메시지를 토큰화하고 명령어를 추출한 다음 명령어를 각 명령어의 핸들러 함수에 매핑하는 사전을 참조하는 것입니다.
대화상자 기반 사용자 인터페이스
대화상자 기반 앱은 사용자가 양식 작성 또는 작업 요청과 같이 Chat 앱과 상호작용할 수 있는 카드 기반 대화상자를 표시하여 Chat 앱 상호작용 이벤트에 응답합니다.
사용자가 대화상자에서 작업을 실행할 때마다 새 상호작용 이벤트가 Chat 앱으로 전송되며, Chat 앱은 대화상자를 업데이트하거나 메시지를 전송하여 응답할 수 있습니다.
자연어 처리
많은 Chat 앱 구현은 자연어 처리 (NLP)를 사용하여 사용자가 요청하는 내용을 확인합니다. NLP를 구현하는 방법에는 여러 가지가 있으며 원하는 대로 NLP를 구현할 수 있습니다.
Dialogflow ES 또는 Dialogflow CX Chat 통합을 사용하여 Chat 앱 구현에서 NLP를 사용할 수 있습니다. 이를 통해 자동화된 대화 및 동적 응답을 위한 가상 에이전트를 만들 수 있습니다.
Chat에 사전 요청 제출
Chat 앱은 Chat에서 직접적인 사용자 상호작용에 의해 트리거되지 않는 메시지 또는 기타 요청을 Chat에 전송할 수도 있습니다. 대신 이러한 Chat 앱은 서드 파티 애플리케이션이나 사용자의 명령줄 호출을 사용하여 트리거할 수 있지만 사용자는 Chat에서 이러한 Chat 앱과 직접 상호작용할 수 없습니다.
대화형이 아닌 Chat 앱은 Chat API를 사용하여 메시지 또는 다른 유형의 요청을 Chat으로 전송합니다.
대화 패턴
Chat 앱이 사용자와 상호작용하는 방식을 고려해야 합니다. 다음 섹션에서는 Chat 앱에서 구현할 수 있는 대화 패턴을 설명합니다.
호출 및 응답 (동기식)
동기식 호출 및 응답 패턴에서 Chat 앱은 사용자의 메시지에 일대일로 응답합니다. 사용자가 Chat 앱에 보낸 메시지 하나당 Chat 앱에서 하나의 응답이 반환됩니다(다음 다이어그램 참고).
위의 다이어그램에서 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 Chat 앱에 동기식 메시지(예: '다음 회의는 언제야?')를 보냅니다.
- Chat 앱은 사용자에게 동기 메시지(예: '2시 30분에 실바 박사님')를 보냅니다.
이러한 유형의 대화형 패턴의 경우 웹 서비스, Pub/Sub, Apps Script, AppSheet 또는 Dialogflow를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.
여러 응답 (비동기)
다중 응답 패턴에는 동기 및 비동기 메시지가 포함될 수 있습니다. 이 패턴은 다음 다이어그램과 같이 채팅 앱이 여러 개의 추가 메시지를 생성하면서 사용자와 채팅 앱 간에 양방향 통신이 이루어지는 것을 특징으로 합니다.
위의 다이어그램에서 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.
- 사용자가 Chat 앱에 동기 메시지(예: '트래픽 모니터링')를 보냅니다.
- Chat 앱은 사용자에게 요청을 확인하는 동기 메시지(예: '모니터링 중')를 보냅니다.
- 나중에 Chat 앱은 REST API를 호출하여 사용자에게 하나 이상의 비동기 메시지(예: 'New traffic')를 전송합니다.
- 사용자가 Chat 앱에 동기식 메시지(예: '트래픽 무시')를 추가로 전송합니다.
- Chat 앱은 요청을 확인하는 동기 메시지(예: '모니터링 중지')를 사용자에게 전송합니다.
이 유형의 대화형 패턴의 경우 웹 서비스, Pub/Sub, Apps Script 또는 AppSheet를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.
이벤트 쿼리 또는 구독 (비동기)
비동기 이벤트 기반 패턴에서 Chat 앱은 Chat API를 쿼리하거나 Google Workspace Events API를 사용하여 Chat 스페이스 또는 사용자에 대한 구독을 만들어 이벤트를 수신합니다. 이벤트는 새 메시지가 게시되거나 사용자가 스페이스에 참여하는 경우와 같이 Chat 리소스의 변경사항을 나타냅니다. 이벤트 기반 Chat 앱은 이벤트 페이로드를 검사하여 변경된 Chat 리소스에 관한 데이터를 가져온 다음 적절하게 응답합니다.
Chat 앱은 스페이스, 멤버십, 메시지, 리액션에 관한 이벤트를 비롯한 다양한 유형의 이벤트를 수신할 수 있습니다. Chat 앱이 Chat API를 쿼리하거나 활성 구독을 통해 이벤트를 수신하면 Chat 앱은 원하는 경우 무제한의 비동기 응답을 생성하여 Chat API를 사용하여 Chat으로 다시 전송할 수 있습니다.
이 유형의 로직을 사용하여 티켓 관리 시스템과 같은 외부 시스템을 업데이트하거나 Chat 스페이스에 비동기식으로 메시지를 보낼 수 있습니다(예: 신규 사용자가 Chat 스페이스에 참여할 때 환영 메시지를 보내는 경우).
다음 다이어그램은 이벤트 기반 대화 패턴의 예를 보여줍니다.
위 다이어그램에서 Chat과 Chat 앱 간의 상호작용은 다음과 같은 정보 흐름을 갖습니다.
- Chat 앱이 Google Chat 스페이스를 구독합니다.
- Chat 앱이 구독하는 스페이스가 변경됩니다.
- Chat 앱은 구독의 알림 엔드포인트 역할을 하는 Pub/Sub의 주제에 이벤트를 전송합니다. 이벤트에는 리소스에서 변경된 사항에 대한 데이터가 포함됩니다.
- Chat 앱이 이벤트가 포함된 Pub/Sub 메시지를 처리하고 필요한 경우 작업을 실행합니다.
이러한 유형의 대화형 패턴의 경우 Pub/Sub, 웹 서비스 또는 Apps Script를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.
이벤트 수신 및 응답에 대해 자세히 알아보려면 Google Chat 이벤트의 이벤트 작업을 참고하세요.
Chat 앱의 일방향 메시지
Chat 앱 패턴의 단방향 메시지를 사용하면 Chat 앱이 Chat 스페이스에 비동기 메시지를 보낼 수 있지만 사용자가 Chat 앱과 직접 상호작용할 수는 없습니다. 이 패턴은 대화식 또는 양방향이 아니지만 다음 다이어그램과 같이 알람 보고와 같은 작업에 유용할 수 있습니다.
위의 다이어그램에서 Chat 앱과 동일한 공간에 있는 사용자의 정보 흐름은 다음과 같습니다.
- Chat 앱은 Chat API를 호출하거나 웹훅 URL(예: '대기열 오버플로 알림')에 게시하여 사용자에게 비동기 메시지를 보냅니다.
- 원하는 경우 Chat 앱에서 추가 비동기 메시지를 전송합니다.
이 유형의 대화 패턴의 경우 웹 서비스, 웹훅, Apps Script, AppSheet, 명령줄 애플리케이션 또는 스크립트를 사용하여 Chat 앱 아키텍처를 구현할 수 있습니다.
Chat 앱에 전송되는 일방향 메시지
Chat 앱 패턴에 대한 단방향 메시지를 사용하면 사용자가 Chat 앱이 요청을 처리하는 동안 Chat 앱이 응답하지 않고도 Chat 앱에 메시지를 보낼 수 있습니다. 이 아키텍처는 기술적으로 가능하지만 사용자 환경이 저하되므로 이러한 패턴은 권장하지 않습니다.
관련 주제
- Google Chat 앱 빌드하기
- Pub/Sub를 Chat 앱의 엔드포인트로 사용하기
- 수신 웹훅을 사용하여 Chat에 메시지 보내기
- Apps Script로 Chat 앱 빌드하기
- AppSheet를 사용하여 자동화에서 Chat 메시지 보내기
- Dialogflow ES Chat 통합
- Dialogflow CX Chat 통합