Google Chat 앱 아키텍처 선택하기

이 페이지에서는 Google Chat 앱을 만드는 데 사용되는 일반적인 서비스 아키텍처 접근 방식을 설명합니다. Google 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 채팅 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 보입니다.

  1. 사용자가 Chat 스페이스에서 Chat 앱에 메시지를 보냅니다.
  2. HTTP 요청은 채팅 앱 로직이 포함된 클라우드 또는 온프레미스 시스템인 웹 서버로 전송됩니다.
  3. 필요에 따라 채팅 앱 로직이 프로젝트 관리 시스템이나 티켓팅 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
  4. 웹 서버에서는 Chat의 Chat 앱 서비스에 HTTP 응답을 다시 보냅니다.
  5. 응답은 사용자에게 전달됩니다.
  6. 원하는 경우 채팅 앱에서 Chat API를 호출하여 비동기식으로 메시지를 게시하거나 다른 작업을 실행할 수 있습니다.

이 아키텍처에서는 시스템에 이미 존재하는 기존 라이브러리와 구성요소를 유연하게 사용할 수 있는 유연성을 제공합니다. 이러한 Chat 앱은 다양한 프로그래밍 언어를 사용하여 설계할 수 있기 때문입니다. 이 아키텍처를 구현하는 방법에는 여러 가지가 있습니다. Google Cloud에서는 Cloud Functions, Cloud Run, App Engine을 사용할 수 있습니다 시작하려면 Cloud Functions로 Google Chat 앱 빌드를 참조하세요.

Pub/Sub

채팅 앱이 방화벽 뒤에서 구현되면 Chat은 앱에 HTTP 호출을 수행할 수 없습니다. 한 가지 방법은 Pub/Sub를 사용하여 Chat 앱 구현에서 Chat의 메시지를 전달하는 주제를 구독하도록 하는 것입니다. Pub/Sub는 메시지를 생성하는 서비스를 이러한 메시지를 처리하는 서비스와 분리하는 비동기 메시지 서비스입니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.

  • 채팅 앱은 방화벽으로 보호되어 있습니다.
  • 채팅 앱이 Chat 스페이스에 관한 이벤트를 수신합니다.
  • 채팅 앱이 조직에 배포됩니다.
  • 채팅 앱은 동기 메시지를 주고받을 수 있으며 비동기 메시지를 보낼 수 있습니다.
  • 채팅 앱은 모든 프로그래밍 언어로 개발됩니다.
  • 채팅 앱에는 완벽한 DevOps 및 CI/CD 관리가 필요합니다.

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

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

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

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

  2. Chat이 Pub/Sub 주제로 메시지를 보냅니다.

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

  4. 원하는 경우 채팅 앱에서 Chat API를 호출하여 비동기식으로 메시지를 게시하거나 다른 작업을 실행할 수 있습니다.

시작하려면 Pub/Sub를 채팅 앱의 엔드포인트로 사용을 참조하세요.

웹훅

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

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

이 아키텍처에서는 채팅 앱이 특정 Chat 공간으로 제한되며 다음 다이어그램과 같이 사용자 상호작용을 허용하지 않습니다.

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

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

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

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

시작하려면 웹훅을 사용하여 Chat에 메시지 보내기를 참조하세요.

Apps Script

채팅 앱 로직은 전체적으로 JavaScript로 만들 수 있습니다. Google Apps Script는 채팅 앱을 위한 로우 코드 개발 플랫폼입니다. Apps Script는 사용자 인증을 위한 승인 과정과 OAuth 2.0 토큰을 처리합니다. Apps Script를 사용하여 공개 채팅 앱을 빌드할 수 있지만 일일 할당량 및 한도 때문에 권장되지 않습니다.

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

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

이 아키텍처는 다음 다이어그램과 같이 다른 Google Workspace 및 Google 서비스(예: Google Sheets, Google Slides, Google Calendar, Google Drive, Google 지도, YouTube)와도 통합되는 채팅 앱에 유용합니다.

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

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

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

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

AppSheet

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

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

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

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

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

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

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

시작하려면 AppSheet로 채팅 앱 빌드를 참조하세요.

Dialogflow

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

  • 채팅 앱은 동기 메시지를 주고받을 수 있습니다.
  • 채팅 앱은 자연어 처리를 사용하여 사용자에게 응답하고 상호작용합니다

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

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

앞의 다이어그램에서 Dialogflow Chat 앱과 상호작용하는 사용자는 다음과 같은 정보 흐름을 가집니다.

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

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

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

명령줄 애플리케이션 또는 스크립트를 만들어 Chat에 메시지를 보내거나, 사용자가 Chat에서 채팅 앱을 직접 호출하거나 이에 응답하도록 허용하지 않고 스페이스 만들기 또는 스페이스 구성원 관리와 같은 기타 작업을 수행할 수 있습니다. 이 아키텍처는 다음과 같은 사용 사례에 권장됩니다.

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

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

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

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

  1. 채팅 앱은 Chat API를 호출하여 메시지를 보내거나 다른 작업을 수행합니다.
  2. Chat에서 요청된 작업을 실행합니다.
  3. 필요한 경우 채팅 앱이 CLI에 확인 메시지를 출력합니다.

채팅 앱 로직 구현

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

사용자 상호작용 처리

채팅 앱은 다양한 방법으로 사용자 상호작용을 수신하고 응답할 수 있습니다. 사용자 상호작용은 사용자가 채팅 앱을 호출하거나 채팅 앱을 사용하기 위해 실행하는 모든 작업입니다.

명령어 파서

명령어 기반 채팅 앱은 채팅 앱 상호작용 이벤트의 페이로드를 검사한 후 이 콘텐츠에서 명령어와 매개변수를 추출합니다. 예를 들어 Chat 사용자와 상호작용하도록 슬래시 명령어 설정을 참조하세요.

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

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

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

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

자연어 처리

많은 채팅 앱 구현에서는 자연어 처리 (NLP)를 사용하여 사용자의 요청을 확인합니다. NLP를 구현하는 방법에는 여러 가지가 있으며 원하는 대로 NLP를 구현하도록 선택할 수 있습니다.

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

사전에 Chat에 요청 전송하기

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

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

대화 패턴

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

통화 및 응답 (동기)

동기식 호출 및 응답 패턴에서 Chat 앱은 사용자의 메시지에 일대일로 응답합니다. 다음 다이어그램과 같이 사용자가 채팅 앱에 하나의 메시지를 보내면 채팅 앱에서 하나의 응답이 반환됩니다.

동기 메시지의 아키텍처

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

  1. 사용자가 채팅 앱에 동기 메시지(예: '다음 회의 일정이 어떻게 되지?')를 보냅니다.
  2. 채팅 앱이 사용자에게 동기 메시지(예: 'Dr. Silva at 2:30')를 보냅니다.

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

다중 응답 (비동기)

다중 응답 패턴에는 동기 메시지와 비동기 메시지가 포함될 수 있습니다. 이 패턴은 사용자와 채팅 앱 간의 양방향 통신이 특징이며, 채팅 앱은 다음 다이어그램과 같이 추가 메시지를 무제한으로 생성합니다.

비동기 메시지의 아키텍처

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

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

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

이벤트 구독 (비동기)

비동기 이벤트 기반 패턴에서 채팅 앱은 Google Workspace Events API를 사용하여 이벤트를 구독합니다. 이벤트 기반 채팅 앱은 Chat 구독 이벤트의 페이로드를 검사한 후 이벤트 유형에 따라 응답합니다. 채팅 앱에 활성 구독이 있는 Chat 공간에서 이벤트가 발생하면 Chat은 해당 이벤트를 채팅 앱에 전송합니다. 그러면 채팅 앱은 선택적으로 여러 개의 비동기 응답을 생성하고 Chat API를 사용하여 Chat으로 다시 보낼 수 있습니다.

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

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

이벤트 기반 메시지 아키텍처

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

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

이러한 유형의 대화 패턴의 경우 Pub/Sub를 사용하여 채팅 앱 아키텍처를 구현할 수 있습니다.

채팅 앱의 단방향 메시지

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

단방향 메시지의 아키텍처

위의 다이어그램에서 채팅 앱과 동일한 공간에 있는 사용자에게는 다음과 같은 정보 흐름이 있습니다.

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

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

채팅 앱에 단방향 메시지 전송

채팅 앱 패턴에 단방향 메시지를 사용하면 요청을 처리하는 동안 사용자가 채팅 앱 없이도 채팅 앱에 메시지를 보낼 수 있습니다. 이 아키텍처는 기술적으로는 가능하지만 사용자 환경이 저하되므로 이 패턴은 사용하지 않는 것이 좋습니다.