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