Google Chat 앱 아키텍처 선택하기

이 페이지에서는 Google Chat 앱을 만드는 데 사용되는 일반적인 서비스 아키텍처 접근 방식을 설명합니다. Google 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을 구성합니다.

온프레미스 서버에서 웹 서비스를 사용하는 Chat 앱의 아키텍처

위 다이어그램에서 HTTP 채팅 앱과 상호작용하는 사용자의 정보 흐름은 다음과 같습니다.

  1. 사용자가 Chat 스페이스에서 Chat 앱으로 메시지를 보냅니다.
  2. HTTP 요청은 Chat 앱 로직이 포함된 클라우드 또는 온프레미스 시스템인 웹 서버로 전송됩니다.
  3. 선택적으로 Chat 앱 로직은 프로젝트 관리 시스템이나 티켓팅 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
  4. 웹 서버는 Chat의 Chat 앱 서비스에 HTTP 응답을 다시 보냅니다.
  5. 응답이 사용자에게 전달됩니다.
  6. 선택적으로 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로 빌드된 채팅 앱의 아키텍처를 보여줍니다.

Pub/Sub로 구현된 Chat 앱의 아키텍처

위 다이어그램에서 Pub/Sub 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.

  1. 사용자가 채팅 메시지 또는 채팅 스페이스에서 Chat 앱에 메시지를 보내거나 Chat 앱이 활성 구독을 보유한 채팅 스페이스에서 이벤트가 발생합니다.

  2. Chat에서 메시지를 Pub/Sub 주제로 전송합니다.

  3. Chat 앱 로직이 포함된 클라우드 또는 온프레미스 시스템인 애플리케이션 서버는 방화벽을 통해 메시지를 수신하기 위해 Pub/Sub 주제를 구독합니다.

  4. 선택적으로 Chat 앱은 Chat API를 호출하여 메시지를 비동기식으로 게시하거나 다른 작업을 실행할 수 있습니다.

시작하려면 Chat 앱의 엔드포인트로 Pub/Sub 사용하기를 참고하세요.

웹훅

Chat 웹훅 URL에 대한 호출을 사용하여 특정 Chat 스페이스에만 메시지를 보낼 수 있는 Chat 앱을 만들 수 있습니다. 이 아키텍처는 다음 사용 사례에 권장됩니다.

  • Chat 앱이 팀에 배포됩니다.
  • Chat 앱은 외부 시스템의 메시지를 단일 Chat 스페이스로 보냅니다.

이 아키텍처에서는 Chat 앱이 특정 Chat 스페이스로 제한되고 다음 다이어그램과 같이 사용자 상호작용이 허용되지 않습니다.

Chat에 비동기 메시지를 보내기 위한 수신 웹훅 아키텍처

위 다이어그램에서 Chat 앱의 정보 흐름은 다음과 같습니다.

  1. 채팅 앱 로직은 프로젝트 관리 시스템이나 티켓팅 도구와 같은 외부 서드 파티 서비스에서 정보를 수신합니다.
  2. Chat 앱 로직은 특정 Chat 스페이스에 웹훅 URL을 사용하여 메시지를 보낼 수 있는 클라우드 또는 온프레미스 시스템에서 호스팅됩니다.
  3. 사용자는 해당 Chat 스페이스에서 Chat 앱의 메시지를 받을 수 있지만 Chat 앱과 상호작용할 수는 없습니다.

이 유형의 Chat 앱은 다른 Chat 스페이스나 다른 팀과 공유할 수 없으며 Google Workspace Marketplace에 게시할 수 없습니다. Chat 앱이 알림이나 상태를 보고하거나 일부 유형의 Chat 앱 프로토타입을 제작하는 데는 수신 웹훅을 사용하는 것이 좋습니다.

시작하려면 웹훅으로 Chat에 메시지 보내기를 참고하세요.

Apps Script

JavaScript로만 Chat 앱 로직을 만들 수 있습니다. Google Apps Script는 Chat 앱을 위한 로우 코드 개발 플랫폼입니다. Apps Script는 사용자 인증을 위한 승인 흐름과 OAuth 2.0 토큰을 처리합니다. Apps Script를 사용하여 공개 Chat 앱을 빌드할 수 있지만 일일 할당량 및 한도로 인해 권장되지는 않습니다.

이 아키텍처는 다음 사용 사례에 권장됩니다.

  • Chat 앱이 팀 또는 조직에 배포됩니다.
  • Chat 앱은 동기 메시지 보내기 및 받기, 비동기 메시지 보내기, 외부 시스템에서 메시지 보내기 등 모든 메시지 패턴을 보내고 받을 수 있습니다.
  • 채팅 앱에는 간소화된 DevOps 관리가 필요합니다.

이 아키텍처는 다음 다이어그램에 표시된 대로 Google Sheets, Google Slides, Google Calendar, Google Drive, Google 지도, YouTube와 같은 다른 Google Workspace 및 Google 서비스와도 통합되는 Chat 앱에 유용합니다.

Apps Script로 구현된 Chat 앱의 아키텍처

위 다이어그램에서 Apps Script Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.

  1. 사용자가 채팅 메시지 또는 Chat 스페이스를 통해 Chat 앱에 메시지를 보냅니다.
  2. Google Cloud에 있는 Apps Script에 구현된 Chat 앱 로직이 메시지를 수신합니다.
  3. 선택적으로 Chat 앱 로직은 Calendar, Sheets와 같은 Google Workspace 서비스 또는 Google 지도, YouTube와 같은 기타 Google 서비스와 통합될 수 있습니다.
  4. Chat 앱 로직은 Chat의 Chat 앱 서비스에 응답을 다시 보냅니다.
  5. 응답이 사용자에게 전달됩니다.

시작하려면 Apps Script로 Chat 앱 빌드를 참고하세요.

AppSheet

AppSheet를 사용하면 코딩 없이 도메인 공유 Chat 앱을 만들 수 있습니다. 자동 구성 모드를 사용하고 템플릿을 따라 일반적인 Chat 앱 작업을 빌드하여 개발 프로세스를 간소화할 수 있습니다. 하지만 일부 AppSheet 웹 앱 기능은 Chat 앱에서 사용할 수 없습니다.

이 아키텍처는 다음 사용 사례에 권장됩니다.

  • Chat 앱이 사용자와 팀에 배포됩니다.
  • Chat 앱은 동기 메시지를 주고받을 수 있으며 비동기 메시지를 보낼 수 있습니다.
  • 채팅 앱에는 간소화된 DevOps 관리가 필요합니다.

다음 다이어그램은 AppSheet로 빌드된 Chat 앱의 아키텍처를 보여줍니다.

AppSheet로 구현된 Chat 앱의 아키텍처

위 다이어그램에서 AppSheet Chat 앱과 상호작용하는 사용자의 정보 흐름은 다음과 같습니다.

  1. 사용자가 채팅 메시지 또는 채팅 스페이스를 통해 Chat에서 채팅 앱으로 메시지를 보냅니다.
  2. Google Cloud에 있는 AppSheet에 구현된 Chat 앱 로직이 메시지를 수신합니다.
  3. 선택적으로 Chat 앱 로직을 Apps Script 또는 Google Sheets와 같은 Google Workspace 서비스와 통합할 수 있습니다.
  4. Chat 앱 로직은 Chat의 Chat 앱 서비스에 응답을 다시 보냅니다.
  5. 응답이 사용자에게 전달됩니다.

시작하려면 AppSheet로 Chat 앱 빌드를 참고하세요.

Dialogflow

자동 대화 및 동적 응답을 위한 자연어 플랫폼인 Dialogflow를 사용하여 Chat 앱을 만들 수 있습니다. 이 아키텍처는 다음 사용 사례에 권장됩니다.

  • Chat 앱은 동기 메시지를 보내고 받을 수 있습니다.
  • Chat 앱은 자연어 처리를 사용하여 사용자와 응답하고 상호작용합니다.

다음 다이어그램은 Dialogflow로 빌드된 채팅 앱의 아키텍처를 보여줍니다.

Dialogflow로 구현된 채팅 앱의 아키텍처

위 다이어그램에서 Dialogflow 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 갖습니다.

  1. 사용자가 채팅 메시지 또는 채팅 스페이스를 통해 Chat에서 채팅 앱으로 메시지를 보냅니다.
  2. Google Cloud에 있는 Dialogflow 가상 에이전트가 메시지를 수신하고 처리하여 응답을 생성합니다.
  3. 선택적으로 Dialogflow 웹훅을 사용하여 Dialogflow 에이전트는 프로젝트 관리 시스템이나 티켓팅 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
  4. Dialogflow 에이전트는 Chat의 Chat 앱 서비스에 응답을 다시 보냅니다.
  5. 응답이 Chat 스페이스로 전송됩니다.

시작하려면 Dialogflow Google Chat 앱 빌드를 참고하세요.

명령줄 애플리케이션 또는 스크립트

사용자가 Chat에서 Chat 앱을 직접 호출하거나 이에 응답하지 않고도 Chat에 메시지를 보내거나 스페이스를 만들거나 스페이스의 구성원을 관리하는 등의 다른 작업을 실행하는 명령줄 애플리케이션 또는 스크립트를 만들 수 있습니다. 이 아키텍처는 다음 사용 사례에 권장됩니다.

  • Chat 앱은 모든 프로그래밍 언어로 개발됩니다.
  • Chat 앱은 비동기 메시지만 보낼 수 있습니다.

다음 다이어그램은 이러한 아키텍처를 보여줍니다.

명령줄 애플리케이션 또는 스크립트로 구현된 Chat 앱의 아키텍처

위 다이어그램에서 채팅 앱의 정보 흐름은 다음과 같습니다.

  1. Chat 앱은 Chat API를 호출하여 메시지를 보내거나 다른 작업을 실행합니다.
  2. 채팅에서 요청된 작업을 실행합니다.
  3. 선택적으로 Chat 앱은 CLI에 확인을 출력합니다.

채팅 앱 로직 구현

Chat에서는 Chat 앱 로직을 구현하는 방식을 제한하지 않습니다. 고정 구문 명령어 파서를 만들거나, 고급 AI 및 언어 처리 라이브러리 또는 서비스를 사용하거나, 이벤트에 응답하거나, 특정 목표에 적합한 다른 작업을 할 수 있습니다.

사용자 상호작용 처리

채팅 앱은 다양한 방식으로 사용자와 상호작용할 수 있습니다. 사용자 상호작용은 사용자가 채팅 앱을 호출하거나 채팅 앱과 상호작용하기 위해 취하는 모든 작업입니다.

명령어 파서

명령어 기반 Chat 앱은 Chat 앱 상호작용 이벤트의 페이로드를 검사한 다음 이 콘텐츠에서 명령어와 매개변수를 추출합니다. 예를 들어 Google Chat 앱 명령어에 응답하기를 참고하세요.

또 다른 방법은 메시지를 토큰화하고 명령어를 추출한 다음 각 명령어의 핸들러 함수에 명령어를 매핑하는 사전을 참조하는 것입니다.

대화상자 기반 사용자 인터페이스

대화상자 기반 앱은 사용자가 양식을 작성하거나 작업을 요청하는 등 Chat 앱과 상호작용할 수 있는 카드 기반 대화상자를 표시하여 Chat 앱 상호작용 이벤트에 응답합니다.

사용자가 대화상자에서 작업을 실행할 때마다 새 상호작용 이벤트가 채팅 앱으로 전송되며, 채팅 앱은 대화상자를 업데이트하거나 메시지를 전송하여 응답할 수 있습니다.

자연어 처리

많은 채팅 앱 구현에서는 자연어 처리 (NLP)를 사용하여 사용자가 무엇을 요청하는지 파악합니다. NLP를 구현하는 방법은 여러 가지이며 원하는 방식으로 NLP를 구현할 수 있습니다.

Dialogflow ES 또는 Dialogflow CX Chat 통합을 사용하여 Chat 앱 구현에서 NLP를 사용할 수 있습니다. 이를 통해 자동화된 대화 및 동적 응답을 위한 가상 에이전트를 만들 수 있습니다.

Chat에 요청을 사전 대응 방식으로 발행

채팅 앱은 Chat에서 직접적인 사용자 상호작용에 의해 트리거되지 않는 메시지나 기타 요청을 Chat에 보낼 수도 있습니다. 대신 이러한 Chat 앱은 서드 파티 애플리케이션이나 사용자의 명령줄 호출을 사용하여 트리거할 수 있지만 사용자는 Chat에서 이러한 Chat 앱과 직접 상호작용할 수 없습니다.

비대화형 Chat 앱은 Chat API를 사용하여 메시지 또는 기타 유형의 요청을 Chat에 전송합니다.

대화형 패턴

Chat 앱이 사용자와 어떻게 상호작용할지 고려해야 합니다. 다음 섹션에서는 채팅 앱이 구현할 수 있는 대화 패턴을 설명합니다.

호출 및 응답 (동기)

동기식 호출 및 응답 패턴에서 Chat 앱은 일대일 기준으로 사용자의 메시지에 응답합니다. 사용자가 채팅 앱에 보내는 메시지 하나는 채팅 앱의 응답 하나로 이어집니다. 다음 다이어그램을 참고하세요.

동기 메시지의 아키텍처입니다.

위 다이어그램에서 채팅 앱과 상호작용하는 사용자의 정보 흐름은 다음과 같습니다.

  1. 사용자가 Chat 앱에 동기 메시지를 보냅니다(예: '다음 회의는 언제야?').
  2. Chat 앱은 사용자에게 동기 메시지(예: '실바 박사, 2시 30분')를 보냅니다.

이러한 유형의 대화형 패턴의 경우 웹 서비스, Pub/Sub, Apps Script, AppSheet 또는 Dialogflow를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.

여러 응답 (비동기)

여러 응답 패턴에는 동기 및 비동기 메시지가 포함될 수 있습니다. 이 패턴은 사용자와 Chat 앱 간의 양방향 통신이 특징이며, Chat 앱은 다음 다이어그램과 같이 원하는 수의 추가 메시지를 생성합니다.

비동기 메시지의 아키텍처

위 다이어그램에서 채팅 앱과 상호작용하는 사용자의 정보 흐름은 다음과 같습니다.

  1. 사용자가 Chat 앱에 동기 메시지('교통 상황 모니터링' 등)를 보냅니다.
  2. Chat 앱은 요청을 확인하기 위해 사용자에게 동기 메시지를 보냅니다(예: '모니터링 사용').
  3. 나중에 Chat 앱은 REST API를 호출하여 사용자에게 하나 이상의 비동기 메시지(예: '새 트래픽')를 보냅니다.
  4. 사용자가 Chat 앱에 추가 동기 메시지(예: '트래픽 무시')를 보냅니다.
  5. Chat 앱은 요청을 확인하기 위해 사용자에게 동기 메시지(예: '모니터링 사용 중지')를 보냅니다.

이러한 유형의 대화형 패턴의 경우 웹 서비스, Pub/Sub, Apps Script 또는 AppSheet를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.

이벤트 쿼리 또는 구독 (비동기)

비동기 이벤트 기반 패턴에서 Chat 앱은 Chat API를 쿼리하거나 Google Workspace Events API를 사용하여 Chat 스페이스 또는 사용자에 대한 구독을 만들어 이벤트를 수신합니다. 이벤트는 새 메시지가 게시되거나 사용자가 스페이스에 참여하는 등 Chat 리소스의 변경사항을 나타냅니다. 이벤트 기반 Chat 앱은 이벤트 페이로드를 검사하여 변경된 Chat 리소스에 관한 데이터를 가져온 다음 그에 따라 응답합니다.

채팅 앱은 스페이스, 멤버십, 메시지, 반응에 관한 이벤트를 비롯한 다양한 유형의 이벤트를 수신할 수 있습니다. Chat 앱이 Chat API를 쿼리하거나 활성 구독을 통해 이벤트를 수신하면 Chat 앱은 선택적으로 여러 비동기 응답을 생성할 수 있으며, 이를 Chat API를 사용하여 Chat에 다시 전송합니다.

이러한 유형의 로직을 사용하여 티켓 관리 시스템과 같은 외부 시스템을 업데이트하거나 새 사용자가 Chat 스페이스에 참여할 때 환영 메시지를 보내는 등 비동기적으로 Chat 스페이스에 메시지를 보낼 수 있습니다.

다음 다이어그램은 이벤트 기반 대화 패턴의 예를 보여줍니다.

Chat 이벤트 구독 아키텍처

위 다이어그램에서 Chat과 Chat 앱 간의 상호작용에는 다음과 같은 정보 흐름이 있습니다.

  1. Chat 앱이 Google Chat 스페이스를 구독합니다.
  2. Chat 앱이 구독한 스페이스가 변경됩니다.
  3. Chat 앱은 구독의 알림 엔드포인트 역할을 하는 Pub/Sub의 주제에 이벤트를 전송합니다. 이벤트에는 리소스에서 변경된 사항에 대한 데이터가 포함됩니다.
  4. Chat 앱이 이벤트가 포함된 Pub/Sub 메시지를 처리하고 필요한 경우 작업을 수행합니다.

이러한 유형의 대화형 패턴의 경우 Pub/Sub, 웹 서비스 또는 Apps Script를 사용하여 Chat 앱 아키텍처를 구현할 수 있습니다.

이벤트를 수신하고 응답하는 방법을 자세히 알아보려면 Google Chat 이벤트의 이벤트 사용을 참고하세요.

Chat 앱의 단방향 메시지

Chat 앱의 단방향 메시지 패턴을 사용하면 Chat 앱이 Chat 스페이스로 비동기 메시지를 보낼 수 있지만 사용자가 Chat 앱과 직접 상호작용할 수는 없습니다. 이 패턴은 대화형 또는 상호작용형이 아니지만 다음 다이어그램에 표시된 것처럼 알람 보고와 같은 작업에 유용할 수 있습니다.

단방향 메시지의 아키텍처

위 다이어그램에서 Chat 앱과 동일한 스페이스에 있는 사용자는 다음과 같은 정보 흐름을 갖습니다.

  • Chat 앱은 Chat API를 호출하거나 웹훅 URL에 게시하여 사용자에게 비동기 메시지를 보냅니다(예: '대기열 오버플로 알림').
  • 선택적으로 Chat 앱은 추가 비동기 메시지를 전송합니다.

이러한 유형의 대화형 패턴의 경우 웹 서비스, 웹훅, Apps Script, AppSheet, 명령줄 애플리케이션 또는 스크립트를 사용하여 Chat 앱 아키텍처를 구현할 수 있습니다.

Chat 앱에 대한 단방향 메시지

Chat 앱에 대한 단방향 메시지 패턴을 사용하면 사용자가 Chat 앱에 메시지를 보낼 수 있으며, Chat 앱은 요청을 처리하는 동안 응답하지 않습니다. 이 아키텍처는 기술적으로 가능하지만 사용자 환경이 좋지 않으므로 이 패턴을 사용하지 않는 것이 좋습니다.