サーバレス練習帳

着眼大局着手小局

HEROKU概論

◆5分でわかるHEROKU

www.sejuku.net

 

・PaaSである

  ・Salesforce社が2011年1月に買収。  

  ・US東海岸と欧州のデータセンターから提供しているクラウド

         ⇒ Herokuエンタープライズについては別の人が説明。

・様々なプログラミング言語

  RubyJavaPythonClojureScala、Node.js、PHP

・開発しやすい:アドオンがたくさんある。

・運用しやすい:ログの確認やパフォーマンスのモニタリング、データベースのバックアップといった運用をサポートする機能もある。

・サイジングしやすい:スケールアウトが簡単。

・金額:Dyno(サーバーのこと)単位の課金(以下の表を参照)

 

◆金額

qiita.com

heroku enterpriseとは?

◆3つの機能

・Heroku Private Spaces:Herokuが提供するアプリケーション実行環境やデータベース機能を、顧客ごとにネットワーク的に分離し、配置することで、堅牢なセキュリティを実現。

 

・マルチリージョン対応:特に東京対応。東京(日本)、フランクフルト(欧州、ドイツ)、オレゴン(米国西海岸)、バージニア(米国東海岸)。通常版は、US東海岸もしくはヨーロッパのサーバーを使う。

 

シングルサインオン対応:ActiveDirectory、LDAPSalesforceなどが提供する認証機構を用いて、「Heroku Enterprise」へログインがすることが可能になる

 

◆特に重要なのはprivate spaces

 

qiita.com

 

(引用1)

 一方、PrivateSpacesはユーザーごとに独立したネットワークセグメントを割当て、その内側にそのユーザー専用のHeroku実行環境を用意します。技術的にはAmazon Web Servicesの提供するVirtual Private Cloud(VPC)を構築し、その内部にアプリの実行に必要なコンテナ管理基盤をオンデマンドで展開します。これによって、各々のPrivate Spacesには独立したネットワークアドレスを割当てることができます。また、PrivateSpacesの外側からのアクセスに対してはIPアドレスによる制約をかけることができます。

 

(引用2)

Heroku Private Spacesを利用するには、セールスフォース・ドットコムの営業担当を通じて、Heroku Enterprise契約を締結する必要があります。Heroku Enterprise契約は個人では契約できないので利用したいという方は自社のエラい人に頑張って交渉してください :P

 

◆Heroku Private Spaces

 

qiita.com

SalesforceとHEROKUを統合する方法の様々

trailhead.salesforce.com

 

まぁ、結論はHEROKU コネクトしかない、と。

(以下、引用)

統合手法の比較

Salesforce と Heroku の各統合手法には、手元の開発者スキルセットと使用事例に応じた適所があります。統合オプション間には、基本的な違いがいくつかあります。

  Heroku Connect Salesforce Connect REST API コールアウト キャンバス
セキュリティモデル インテグレーションユーザ インテグレーションユーザや指定ユーザなど、さまざま OAuth アプリケーションユーザ アプリケーションユーザ
制限 制限から除外 ソース、オブジェクト、項目の最大数 API の制限 API の制限 要求の制限
SObject 機能 すべての標準機能 参照のみ
数式項目と積み上げ集計項目なし
トリガ、ワークフロー、承認プロセスなし
入力規則なし
項目履歴管理
メモ、添付ファイルなし
すべての標準機能 N/A すべての標準機能
データ戦略 リアルタイム BiDi 同期または OData OData またはプロキシ 参照とコピー ペイロード キャンバス API
エンドユーザ 匿名、顧客 Salesforce ユーザ すべて なし Salesforce ユーザ
プロトコル SQL Apex HTTP HTTP HTTP

 

 

 ◆Salesforce Connect (旧Lightning Connect)について 

help.salesforce.com

Salesforce Connectの場合は、1時間あたり10,000件のODataコール制限がある。

 

HEROKU Connectのポンコツさ加減をなんとかするのも、Enterprise版に期待される役割ですね!(というつなぎでいきましょう!)

API解析の鉄板スクリプト(と、私は思っている。)

### インポート
import requests #REST利用、Apache2のプログラムをインポートしています
import json #json解析
import os #環境変数利用
import boto3 #AWS内の各各サービスの利用
import logging #ログ出力

### ログ出力レベル設定
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # ログ出力レベルをINFOに設定

### 定数
COREVO_API_ENDPOINT = 'https://corevo-api.xfarm.jp:8443/namedentitygoolab/api/entity?apikey='+os.environ['COREVO_API_KEY']
COREVO_API_HEADERS = {
# 'Content-type': 'application/json',
'Content-type': 'application/x-www-form-urlencoded'
}

def lambda_handler(event, context):
###使い方はコチラ https://corevo-api-portal.xfarm.jp/documentation/namedentity
payload = {
'request_id' : '0001',
'sentence' : '今日の午後、鈴木さんと会う予定なんだ。'
# ,
# 'class_filter' : 'PSN'
}
response = requests.post(COREVO_API_ENDPOINT, headers=COREVO_API_HEADERS, data=json.dumps(payload))
response_json = response.json()
logging.info(response)
logging.info(json.dumps(response_json))
return 'Hello from Lambda'