情熱smalltalker smalltalkとawsでクラウドサービスを実現するための挑戦

79
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦 SORABITO株式会社 / 吉田 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. The Passionate Smalltalker:

Upload: sho-yoshida

Post on 21-Nov-2014

1.301 views

Category:

Engineering


6 download

DESCRIPTION

第68回Smalltalk勉強会 資料 http://www.smalltalk-users.jp/Home/gao-zhi/dai68kaismalltalkbenkyoukai Smalltalk(Phato)とAWSでクラウドサービスを実現するための挑戦 建設機械のレンタル会社向け相見積もり業務改善サービス「Mikata」 https://mikatacloud.com/lease/index.html

TRANSCRIPT

Page 1: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkとAWSでクラウドサービスを実現するための挑戦

SORABITO株式会社 / 吉田 翔

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

Page 2: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

知らない方のために

情熱プログラマーChad Fowler (著), でびあんぐる (翻訳)

出版 オーム社

Page 3: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

プロフィール• 吉田 翔(よしだしょう)

• 1986年生まれ 28歳

• Smalltalker

• 昔,東京の会社のSEだった

• 趣味 昼寝とピアノtwitter: @newapplesho

facebook: newapplesho

Page 4: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SORABITO株式会社(http://www.sorabito.com)

• サービス企画・開発・運営

• 相見積業務改善サービス「Mikata(ミカタ)」

• ウェブシステム開発

• ウェブ制作・ウェブマーケティング

Page 5: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

メンバーよりMacが多い

Page 6: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

開封の儀をするとシリーズがそろう

Page 7: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

30歳までにやりたかった夢

自分たちで考えたサービスを作りたい

Page 8: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalkerとしての自分

学生時の研究テーマの実装から予約システムなどで Smalltalkを使い続けてきた

Smalltalkは実戦でも使える

Smalltalkって最高! もっと日本のSmalltalkの事例を増やしたい

Page 9: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalkで クラウドサービスを作ってみよう

やっちまったな・・・・

Page 10: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

建設機械相見積もりクラウドサービス Mikata

https://mikatacloud.com/

Page 11: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

建設機械について• 油圧ショベル(ユンボ)、ブルドーザー、ダンプなど建設現場で使う機械

• 主に建設会社や建設機械レンタル会社が所持しています

• 新品はすぐには手に入らない

• 生産調整もあって中古の建設機械は重要(売れます)

• 世界中のどこかで建設機械は使われている

Page 12: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

市場を選ぶ

• 建設機械業界はIT活用を考え始めている

• レンタル会社が国内の4割の機械を保有している

• レンタル会社は、レンタル・修理・販売・中古機械の買取を行っている

建設機械の売買について注目

Page 13: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

レンタル会社の建設機械売買についてよくあるご質問

�&�� ��

"������

'�����������%������$#� �� ��#�

!����

���������%�����

��������

・相見積もりが必要 ・自社保有機だけではなく,客先機械も売買する

Page 14: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

相見積もりの問題

• 営業担当者の貴重な時間が少なくなり,他の営業活動の機会が損なわれる

• 何度も同じ質問を返答することがある • メールの誤送信の可能性

Page 15: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

写真の送付作業について

メールリサイズ

DRYじゃない

メールサーバーの容量が小さいことが多々あり

Page 16: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

解決案

全国の買取会社に対して査定を 依頼・管理できるクラウドサービス

Mikata

Page 17: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

サービスの特徴

1. いつでもどこでも入力項目に従うだけで利用可能

2. 複数の買取会社に相見積もり可能

3. 案件の管理・マネージメントができる

4. 新たなソフトウェアは不要

Page 18: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

1.ウェブからいつでもどこでも利用可能

機械ごとに査定に必要な情報を入力するだけ

Page 19: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

1.ウェブからいつでもどこでも利用可能

写真はそのままアップロード。 リサイズ作業は「Mikata」にお任せください。

Mikata

Page 20: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

2.複数の買取会社へ相見積可能

電話は成約直後だけウェブでやり取りすることで記録に残る

���� ���

���������� �

���

������

Mikata

Page 21: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

2.複数の買取会社へ相見積可能

査定機械の質問・回答画面

Page 22: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

3.案件が管理できる

査定案件が管理できるため、お客様のフォローが容易。 管理者も閲覧することで営業担当のサポートも可能。

Page 23: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

4.新たなソフトウェアは不要

ミカタ

ブラウザで利用可能。 ソフトウェアの更新は不要。常に最新機能が利用可能。

Page 24: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

どうやって進めていくか• リーンスタートアップを実践

• 2枚の画面フロー図と10枚のスライドでサービス提案

• アイディアの修正を繰り返し行い,サービス利用者が見つかるまで作らない

Page 25: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

ID

pass

MIKATA

login

login

オリジナルアカウントでログイン

営業担当者様のフローマネージメントサービス「ミカタ」概要作成者 更新日更新者吉田 翔2014/04/09作成日

MIKATA

査定を依頼する

依頼中案件一覧

成約案件処理

今月は○○件査定中

menu

MIKATA

ユンボ

査定希望の機械を選択してください

ダンプ クレーン

溶接機 草刈機 発電機

select machine

MIKATAユンボ査定メーカー

形式

稼働時間

保管場所

次へ

order form

MIKATAユンボ査定写真1

写真2

写真3

次へ

photo upload

後ほど

MIKATAユンボ査定

次へ

confirm

備考 買い替えによる買取

担当 ○○4/16期限愛知保管場所

お客様名 ○○様

形式カテゴリ

ゴムPC-28UUユンボ

キャタ

情報の修正

MIKATA

査定依頼ありがとうございます

今月は○○件です

thank you

パスワードを忘れた人はこちら

MIKATA

order list

査定一覧

査定レポート

更新日

更新日

更新日

更新日

更新日

更新日

溶接機

2014/03/31

2014/03/31

コマツ

編集

PC-120

2

形式

4

依頼中

2014/03/31

カテゴリ

草刈機

編集

編集

ユンボ

メーカー

HMA-1200

3 依頼中

PC-28UU

査定依頼日

コマツ

いすず

no

1

成約

相見積

デンヨー

編集

編集状況

ダンプ

編集

2014/03/31

5

2014/03/31

xxx

編集

ゼノア

ユンボ

成約

MIKATAユンボ査定

confirm and Q & A

備考 買い替えによる買取

担当 ○○4/16期限愛知保管場所

お客様名 ○○様

形式カテゴリ

ゴムPC-28UUユンボ

キャタ

情報の修正

記録 質問 査定結果

Q.旋回モーターに漏れはありますか?

Q.引き取り条件を教えてください

Q.希望金額はありますか

MIKATAユンボ査定

confirm and customer log

備考 買い替えによる買取

担当 ○○4/16期限愛知保管場所

お客様名 ○○様

形式カテゴリ

ゴムPC-28UUユンボ

キャタ

情報の修正

記録 質問 査定結果

2014/03/31お客様より4/16締め切りと確認

MIKATAユンボ査定

confirm and result

備考 買い替えによる買取

担当 ○○4/16期限愛知保管場所

お客様名 ○○様

形式カテゴリ

ゴムPC-28UUユンボ

キャタ

情報の修正

記録 質問 査定結果

2014/03/31希望金額確認 300000円とのこと

2014/03/31希望金額確認中

依頼

依頼する

依頼

依頼

依頼依頼

金額

280000○○

xx

条件

400000310000

no

xx

xx

xx5

xx4

1

○○

○○

300000

3

○○トレード2 320000

会社○○貿易

・ページめくりで案件を閲覧可能・ソート可能・印刷もできるとよい?

・査定に必要な最低入力項目を容易・機械に合わせ入力フォームを変更する・入力チェック

・トランザクションメール(査定依頼完了メールの配信)・今月の担当者の査定依頼件数を表示

・質問のやり取りはウェブ上で可能にする・質問と回答を全ての買取会社に公開する

・営業担当者様がお客様情報を記録可能・記録に担当者名と日時を残す・実働時間も記録できるようにする・お客様に対するフォローもできるようにする

MIKATA

更新日

更新日

更新日

溶接機 2014/03/31

形式

4 2014/03/31

カテゴリ

草刈機

メーカーHMA-120

0

査定依頼日no

成約

デンヨー

報告状況

5 編集

ゼノア

成約

成約案件処理

報告

報告

社外秘Copyright © 2014 AOKI Development Co., Ltd All Rights Reserved.

  

MIKATA成約案件処理

成約した買取会社を選択してください

成約

-

依頼未

依頼未

成約成約

金額

280,000○○

xx

条件

400,000310,000

 

xx

xx

xx 

xx 

 

○○

○○

300,000

 ○○トレード 320,000

会社○○貿易

成約金額

報告

X

MIKATA査定レポート

滞留案件

・案件数、成約率の表示・滞留案件を確認(お客様へのフォローを大事にする)

・査定結果の表示と金額交渉を可能とする・ヒアリングにより依頼していた買取会社に催促できるように催促ボタンを付ける・ヒアリングにより金額アップを促す「金額アップ」ボタンを付ける

MIKATA

select company

・写真は自動リサイズ・査定会社を指定する

買取会社の指定

Page 26: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalkで クラウドサービスを はじめてみる

https://mikatacloud.com/

Page 27: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Mikataの営業

6/19

6/24

6/24

6/267/1

7/3

7/4Nagoya

MatsuzakaTokyo

SendaiFukuoka

Wakayama

Wakayama

Page 28: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

川にも飛び込む

Page 29: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

※映像は開発途中の画面であるため実際と異なる場合がございます

Mikata紹介ビデオ

http://youtu.be/dw5wyykigWw

Page 30: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

どうやって作るか• サービスの拡大に合わせてスケールできるクラウドサーバー(AWS)を利用

• 少数メンバーで運用するためのサービスを活用

• 機械毎に異なる情報を保存するためNoSQLを活用

• 写真はオリジナルファイルだけを保存

• トランザクションメールを配信

Page 31: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWSで利用したサービス

• EC2(仮想サーバー)

• ELB(ロードバランサー)

• Route53(DNS)

• Amazon RDS for PostgreSQL(RDB)

• Amazon DynamoDB(NoSQL)

• S3(写真,ログ等のストレージ)

Page 32: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Amazon DynamoDB

• キー・バリュー型のNoSQLデータベースサービス

• 管理不要で信頼性が高いデータベース

• データセンター間の自動同期レプリケーション

• 高速なアクセスが可能

• SSDを利用している

• ストレージ容量制限がない

• プロビジョンスループットだけを指定するだけ

• API(SDK)経由で利用できる

Page 33: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Region

Availability Zone Availability Zone

PostgreSQLPostgreSQL

RDS PostgreSQL

PostgreSQLPostgreSQL

RDS PostgreSQL

DynamoDBS3

Amazon EC2 Amazon EC2

Internet

Amazon Route 53 Hosted Zone

Elastic Load Balancing

SSLSSL

SSLSSL

構成図

同期同期

Page 34: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkerがAWSを使う際の問題

nodeJS

iOS

iOS JavaJavascript Net

nodeJS

Android

PHP Python

Ruby

Ruby

あれSmalltalkは?

Page 35: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkerがAWSを使う際の問題

ないじゃないか!

Page 36: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Amazonさんに聞いてみた

SmalltalkでAWS(DynamoDB)使いたいけど,どうしたらいいですか? MongoDBならパッケージが あるからいいんですけど・・・

※Smalltalkには あのKent Beckが作った MongoDBのパッケージがある

Page 37: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Amazonさんの回答

https://www.flickr.com/photos/mendhak/4850482798/

REST APIを叩くのじゃ Smalltalkならできるはず

Page 38: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AmazonさんのMongoDBへの回答

https://www.flickr.com/photos/mendhak/4850482798/

スケール時に大丈夫? バックアップとか大丈夫?

マシン台数いるから費用も大丈夫?

Page 39: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

クラウドサーバー「Mikata」を支えるSmalltalk

開発言語 Smalltalk(Pharo 3.0beta)

Web FrameworkSeaside 3.1(継続ベースの

Web Framework)

O/Rマッピング Glorp

ログ Nagare(Fluentd)

AWS SDK Smalltalk版を作る

Page 40: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

なんでSmalltalk?

• Java プロトタイプ作りで例外ばっかり考えたくない

• PHP デバッグしながら開発できるか不安

• Ruby よい。でもチューニング方法詳しくない

• Scala よい。あこがれ。学習時間がなかった。

• Perl そんなに詳しくない。

• Python そんなに詳しくない。

• Node.js スケールが心配。

別にSmalltalkしかできないわけじゃないんだからね

I♥️Smalltalk

すばやく短い期間かつ仕様変更歓迎でやるには 言語は好きなものを使いたい

Page 41: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

愛せよ、さもなくば捨てよ

Page 42: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkでAWS SDKを攻略していみる

AWS Signature Version 4

Signature version 4 signing process

http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

ページをよく読んでSmalltalkで作ってみる (英語ツラい)

多くのAWSサービスとやり取りするとき必要

Page 43: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS Signature Version 4 for Smalltalk

SHA256が必要PharoにはなぜかSHA1しかない

そんなこともあるさ、気にするな

MCHttpRepository location: 'http://smalltalkhub.com/mc/Cryptography/Cryptography/main' user: '' password: ''

冷静にパッケージを追加で対応

Page 44: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS Signature Version 4 for Smalltalk

Page 45: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkでDynamoDB HTTP APIを攻略する

• SSL接続

• URLは全て/。URLで処理内容を指定しない

• ヘッダーのx-amz-targetで処理内容を指定する

• エンドポイントはデーターセンターの場所を指定

• JSON形式で送信、JSON形式で受信

• ヘッダーにx-amz-dateというISO 8601形式(例: 20130315T092054Z)の日付を入れなければならない

DynamoDB HTTP APIについて

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html詳しくは

Page 46: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS DynamoDB Client for Smalltalk

ISO 8601形式の日付フォーマット出力が必要Pharoにはなぜか標準装備されていないっぽい (いつからないの?  知らないだけであるかも。  日付系クラスどうにかして欲しい)

そんなこともあるさ、気にするな

Page 47: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS DynamoDB Client for Smalltalk

文字列データはUTF8でなければならない

Pharoの文字列をマッピングする際に UTF8にしなければならない

いつものことさ、気にするな

Page 48: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS DynamoDB for Smalltalk

低レベルAPIの必要なところだけ実装

Page 49: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

例:DynamoDBのテーブルの一覧

dy := DynamoDBRowClient new. dy awsConfig accessKeyId:'アクセスキー'. dy awsConfig secretKey:'シークレットキー'. !operationName := #ListTables. requestBody := '{}'. resp := dy operationName: operationName contents: requestBody.

Page 50: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

AWS DynamoDB for Smalltalkを気をつけること

API作成だけでお金がかかってしまう

Page 51: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

DynamoDB Local

Javaで動くローカル版DynamoDB

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html

詳しくは

商用では使えない

APIの確認程度ぐらいしか使えない

API作成の際にはDynamoDB Localがおすすめ

Page 52: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

DynamoDB Localも対応しております

dy := DynamoDBRowClient new. dy awsConfig accessKeyId:'アクセスキー'. dy awsConfig secretKey:'シークレットキー'. dy awsConfig useSSL: false. dy endpoint: ‘localhost:8000'. !operationName := #ListTables. requestBody := '{}'. resp := dy operationName: operationName contents: requestBody.

Page 53: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

システム構成

サービスロジックサービス

ウェブサービスブラウザ

営業担当者取引先担当者

クラスタリングは検討RDB(MultiAZ), DynamoDB

データベース メールバッチ

PCとmobile対応

ログ記録お客様情報を記録する

Fluentd簡易API作成RDSとの接続のためにStunnelを用いる

fileupload moduleimage filter

冗長化サーバ

ログの保存先はS3

画像の格納先 S3

Page 54: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalk(Seaside)でHTML5を攻略する

• Mikataはスマートフォン,タブレット,PC対応

• ウェブブラウザで利用可能

• HTML5を使えばファイルアップロードも可能

• UIはLESSを使って独自CSS Frameworkを構築

Page 55: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SeasideとHTML5

WAComponent >> updateRoot:aHtmlRoot super updateRoot: aHtmlRoot. aHtmlRoot beHtml5.

でもXHTMLのよけいな物が残る

そんなこともあるさ、気にするな

Seasideのページによると

Page 56: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SeasideとHTML5

WAComponent >> updateRoot:aHtmlRoot super updateRoot: aHtmlRoot. aHtmlRoot beHtml5. aHtmlRoot htmlAttributes removeKey:'xml:lang'; at:'lang' put:'ja'; removeKey: 'xmlns'. self setHtmlHeader: aHtmlRoot.

不要な情報は消せばいい

Page 57: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SeasideでSSLを攻略する• Mikataは常時SSL。Seasideのセッションキーを

SSL通信時のみ送信する(セッションジャック対策)

• セッションの固定化対策をすることWAComponent >>(class)initialize "self initialize" | app | app := (WAAdmin register: self asApplicationAt:'app') preferenceAt: #sessionClass put: MSession; yourself. app preferenceAt: #serverProtocol put: 'https'.

Page 58: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkでRDS for PostgreSQLを攻略する

• RDS for PostgreSQLへの接続はSSL

• PostgresV2はSSL接続対応していない

• Stunnel(SSL Proxy)を使って対応

Page 59: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalkでログを攻略する

• @UmejavaさんのNagare(Fluentd)を使いましょう

• ソフトウメヤ 梅澤さんありがとうございます!

• Fluentdのプラグインを用いてログはS3に出力

https://github.com/mumez/nagare-loggernagare-logger

Page 60: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

RDBをNoSQLのハイブリッドの実現

• DynamoDBのクエリは物足りない

• NoSQLはスキーマレスが必要なところだけ利用

• スキーマが固定できるのはRDBにマッピングして利用

Page 61: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

その他

• 画像やcssは外部url参照(Smalltalk imageは軽くする)

• 業界的にメール送信はUTF8非対応クライアントもあるためRubyに任せる

• メールを送信はSendGrid(https://sendgrid.kke.co.jp/)を活用

• 画像アップロードやリサイズはNginxに任せる(Smalltalkで処理しない。Smalltalkに優しくする)

Page 62: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Pharo 3.0でかわったこと

nohup ./pharo.sh ./Pharo3.0.image --no-quit > /dev/null 2>&1 < /dev/null &

GUIなし起動方法がかわった

コマンドライン操作も可能になった

./pharo.sh ./Pharo3.0.image eval "NgSettings default logLevel: 0. Smalltalk snapshot: true andQuit: true."

GUIを立ち上げなくてもログレベルだって変更できる

Page 63: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Smalltalkで クラウドサービスを

公開2014年7月試験運用開始

2014年9月一般公開https://mikatacloud.com/

Page 64: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkプログラマーの幸せへの挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

Demo

Page 65: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

建設機械・重機・車両の売買に関わる方のための エコインフラシステム「Mikata」

No.1 クラウドサービスを目指します

Mikata

http://mikatacloud.com

Page 66: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

終わりのない道

Page 67: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

Seasideについて

• 大きくなり過ぎ

• だいぶ古くなっている(特にCanvas周り)

• 継続であるためAP間のセッションの共有化が難しい

• 画面周りの自動テストが難しい

軽量かつStateless Web Frameworkが欲しい

Page 68: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

DB周りについて

• PostgreSQLのドライバーが古すぎる

• O/Rマッピングが苦行(イケていない)

• MySQLもそろそろ使いませんか?(SmalltalkHubにはあるけど修羅な気が・・・)

• マイグレーションが大変

梅澤さん曰く,「VisualWorksならありますよ」

Page 69: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

開発力からデプロイ数向上へ

• imageを育てることをそろそろやめたい

• 「Immutable Infrastructure」みたいに「Immutable Smalltalk Image」を実現したい

Smalltalkのデバッガー開きながら構築するのは最高

Page 70: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

インフラの管理ツールとしての道• Smalltalkで仮想サーバーをコントロールしたり,inspecterで素早く状態確認ができたらいいのでは?

• SmalltalkならEC2の操作も容易にできる気がする

• EC2 for Smalltalk検討中

• AWS CLIはちょっと複雑な気がする

Page 71: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

昨日よりよく

Page 72: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

SmalltalkでGCP

Page 73: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

最初にGCPで対応したいサービス

Google Cloud DataStore(NoSQL)

GCP for Smalltalk作成予定

Page 74: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

実はGCP上ではSmalltalkは動いている

先日某大学の簡易書籍管理システムで Smalltalk(Seaside)を使ったWeb Systemを

Google Cloud Compute Engineで動かしている

Page 75: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

他のCloudは?

使う機会がないので予定なしです

ご希望があればSDK作ります

Page 76: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

感想

• Smalltalkはクラウドサービスでも使える

• Web Framework周りを充実すれば、ユーザー向上も狙えると思う

• Scalaなどを勉強してSmalltalkもう一度学び直したい

• Smalltalkエバンジェリストへの道は遠い

Page 77: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

情熱SmalltalkerSmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

The Passionate Smalltalker:

One more thing…

Page 78: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

future := [ self company add: Smalltalker ]. future value.

10月より新たなSmalltalkerがSORABITOにジョイントします

Page 79: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦

Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.

http://www.sorabito.com

Smalltalkでクラウドサーバーを使ってみたい方は

SORABITO株式会社にご相談ください