すぐれた統一感のあるデジタルエクスペリンスは、顧客・パートナー・従業員にとって、すばらしいものであり、そういった最新のエクスペリエンスを構築するには、Customer 360 のデータとビジネスロジックにシームレスにアクセスできる必要があります。 それを実現する Salesforce Evergreen を発表できることを嬉しく思います。これは、フルマネージドな Kubernetes 上に構築されたサーバーレス機能で、オープンなプログラミング言語のサポート、一般的に利用される高性能なデータストアを提供する Customer 360 Platform の新しい機能です。 Evergreen は、顧客が期待される、親密で魅力的なデジタルエクスペリエンスを構築するための最良の方法です。
Evergreen は、開発チームの生産性を高めるために、以下の技術とアーキテクチャパターンをサポートしています:
- Functions-as-a-Service:ビジネスロジックやイベント処理を、Node.js、Java、Apex といった開発言語、および、その開発言語のエコシステムで構築します。Funcstions は、Apex から直接、もしくは、様々な呼び出しタイプとイベントソースをハンドルする Platfrom Events から呼び出されます。
- Microservices: 小規模でアジャイルなチームにより、複雑で有益なデジタルエクスペリエンスを構築し、頻繁に改善される、HTTP ベースのサーバーレスアプリケーションや API の構築。サービスと Functions はサーバーレスであり、利用されていないときはリソースを消費せず、トラフィックの増加により、自動的にエラスティックにスケールします。
- マネージドデータストア: Postgres、Apache Kafka、Redis は、高パフォーマンスで永続化するデータ保管場所やリアルタイムイベント管理を提供し、Salesforce Data API を補完します。
業界標準を考慮し、これらの機能は、顧客コンテキスト上に構築される Salesforce データモデル駆動で、省コードなコンポーネントで構成されています。Evergreen は Salesforce プラットフォームの一部で、追加の認証やネットワーク設定は必要ありません。 たとえば、開発者は Apex から関数を直接呼び出し、組織のコンテキストでロジックを実行、クエリー、更新などの操作ができます。
Evergreen は Kubernetes をベースとし、Salesforce が運用するフルマネージドなサーバーレスサービスを提供することにより、スケーラブルなコンテナテクノロジーの管理容易性と、高い利用性のバランスを実現します。 このサービスを利用すると、インフラストラクチャの運用ではなく、イノベーションに集中できます。 Evergreen は、アプリケーション、Function、サービスを一般的なオープンな開発言語、開発ツール、開発技術を使って構築できるので、すべての開発チームに、オープンな Salesforce 開発環境を提供します。
Dreamforce 2019 の Developer Keynote では、Caesars Entertainment のような Salesforce のお客様が、 Evergreen を使用して、最新のゲストチェックインエクスペリエンスを構築する方法を紹介しました。キーノートのデモでは、Lightning Platform を使用して、清掃と部屋の準備を管理する従業員向けの iOS アプリをすばやく構築し、Evergreen で実行されるイベント駆動型 Function 機能でシームレスに拡張しました。清掃スタッフがアプリを使用して部屋を準備完了とマークすると、プラットフォームイベント���、Node.js で作成された Function をよびだし、ゲストのコンテキストで、リアルタイム通知を送信し、ゲストにアーリーチェックインの準備が完了したことを知らせます。
宿泊者のチェックアウト後には、請求書の明細を作成する別の Function を呼び出します。Node.js で作成された Function は、請求書の明細と、npm PDF モジュールを使用して、請求書を作成します。以下は、CloudEvent が追加データを取得し、PDF を作成し、宿泊者の予約情報のリンクをPDFに追加するサンプルです。
1import { UnitOfWork, SObject } from '@salesforce/functions';
2import { PDFDocument } from 'pdfkit';
3import * as fs from 'fs';
4
5module.exports = async function(event, context, logger) {
6 const folioPayload = event.payload;
7
8 // Creating a new Unit Of Work instance
9 const uow = UnitOfWork;
10
11 // Run SOQL query to fetch folio data
12 const query = `SELECT Id, Description__c, Amount__c, Date__c FROM Booking_LineItems__c WHERE Reservation__c = '${folioPayload.recordId}'`;
13 const folioLineItems = await context.sfApi.query(query);
14
15 // Call function to generate PDF and store in external data store
16 // for Files Connect
17 const pdfFilesConnect = await generatePdf(
18 folioPayload.recordId,
19 folioLineItems
20 );
21
22 // Update the booking object
23 const ReservationObject = new SObject('Reservation__c');
24 ReservationObject.Id = folioPayload.recordId;
25 ReservationObject.Status__c = 'Paid and Folio created';
26 uow.registerModified(ReservationObject);
27
28 // Update data
29 uow.commit();
30};
31
32async function generatePdf(id, lineItems) {
33 # generate and store folio PDF
34}Functions は、利用されていない状況の時には休止状態となり、なにかしらの呼び出しが発生した場合や負荷が発生した場合には、自動的にスケールします。Functions は、 Cloud Native Buildpacks から簡単にビルドされ、開発者は、数多くのサポートされている開発言語で、パッケージやライブラリを利用して、開発することができます。
Evergreen は、Heroku の10年に及ぶスケーラブルなコンテナランタイムと高パフォーマンスなデータストアの構築運用経験を、 Lightning ツールと機能群に統合することで誕生した、Salesforce Platform への最新の機能追加です。サーバーレスのエラスティックなコンテナ技術と、顧客データとビジネスロジックへのシンプルなアクセス手段との組み合わせにより、Salesforce は、顧客、パートナー、従業員にとって、差別化されたデジタルエクスペリエンスを構築、および、運用するすばらしい場所になります。
Evergreen デベロッパープレビューは2月にリリースされる、Spring ’20 で利用可能になる予定です。 ぜひ、Evergreen の最新情報をお届けするメールにサインアップしてください。 また、Dreamforce Developer Keynote の録画では、Evergreen のデモンストレーションをご覧いただけます。#DF19 にご参加いただいている場合には、Evergreen の詳細を入手するために、(Moscone Westの)Trailhead エリア内の Platform Park にある Evergreen ブースにお越しください。また、Evergreen に関する Dreamforce ブレークアウトセッションへもご参加ください。
- Build More on the Salesforce Platform with Evergreen Functions: An Elastic Runtime for Node.js – 11月20日(水) 2:30 – 2:50pm, Moscone West (Surfside Theater)
- Salesforce Evergreen and Evergreen Functions: Build evented serverless consumer apps – 11月21日(木) 3:00 – 3:40pm, Moscone West (Room 2007)
- Evented enterprise app architectures with Salesforce Evergreen and Evergreen Functions – 11月21日(木) 5:00 – 5:40pm, Moscone West (Room 2024)
- How to Build Event-Driven Serverless Consumer Apps and Functions on Salesforce 2 – 11月22日(金) 12:00 -12:40pm, Moscone West (Surfside Theater)