AWS ElasticBeanstalkにDocker Imageをさくっとデプロイしてみた
AWSのElasticBeanstalkのDockerホスティングを使ってDocker Imageをサクッとデプロイできたのでメモとして残しておきます。
デプロイするもの
int128先輩が作ったJiraのWebhookのJSONを加工してしてSlack / Mattermostに通知連携してくれるGoアプリを動かしてみます。
ElasticBeanstalkにデプロイする
ドキュメントに従ってデプロイしてみます。
まずドキュメントに従ってDockerrun.aws.json作成しzipで固めたものを用意します。
// Dockerrun.aws.json { "AWSEBDockerrunVersion": "1", "Image": { "Name": "int128/jira-to-slack" }, "Ports": [ { "ContainerPort": "3000" } ] }
DockerfileとDockerrun.aws.jsonの2つをまとめたzipの場合は以下のように書けばOKです。
// Dockerfile FROM int128/jira-to-slack EXPOSE 3000 CMD ["/jira-to-slack"]
// Dockerrun.aws.json { "AWSEBDockerrunVersion": "1", "Ports": [ { "ContainerPort": "3000" } ] }
マネジメントコンソールでElasticBeanstalkで以下の設定で環境を新規に作成します。
- アプリケーション名
- 適当な名前をつける
- プラットフォーム
- 汎用Docker
- アプリケーションコード
- コードのアップロードを選択して、上記で作ったzipファイルをアップロードする
最低限必要なものは上記だけですが、「さらにオプションを設定」を選択すると以下の項目が追加で設定できます。
- ソフトウェア
- インスタンスタイプ
- アプリが動作するインスタンスタイプを選べます
- 容量
- AutoScaling Groupの設定ができます。デフォルトは単一インスタンスです。
- ロードバランサー
- AutoScaling Groupを設定すると設定できます。単一インスタンスの場合は選択できません。
- ローリング更新とデプロイ
- デプロイメントの反映のさせ方の設定ができます。
- セキュリティ
- ElasticBeanstalkに付与するIAMロールが設定できます。
- モニタリング
- CloudWatchでモニタリングする項目やヘルチェの設定できます
- 管理された更新
- メンテナンスウィンドウによる更新を定期的に行う設定のようです
- 通知
- 通知をメールで飛ばせるようです
- ネットワーク
- vpcやパブリックIPが設定できます
- データベース
- RDSの設定ができます
- タグ
- タグが付けられます
上記の設定を変更したあとに アプリの作成 を選択すると、環境構築がスタートします。
3分程まつと環境構築が完了しアプリが利用できるようになります。
2019-01-30 22:56:57 UTC+0900 INFO Environment health has transitioned from Pending to Ok. Initialization completed 49 seconds ago and took 2 minutes. 2019-01-30 22:56:15 UTC+0900 INFO Successfully launched environment: Test-env 2019-01-30 22:56:15 UTC+0900 INFO Application available at Test-env.xxxxxxx.us-east-1.elasticbeanstalk.com. 2019-01-30 22:55:58 UTC+0900 INFO Docker container xxxxxxxxx is running aws_beanstalk/current-app. 2019-01-30 22:55:57 UTC+0900 INFO Added instance [i-xxxxxxxxx] to your environment. 2019-01-30 22:55:50 UTC+0900 INFO Successfully built aws_beanstalk/staging-app 2019-01-30 22:55:48 UTC+0900 INFO Successfully pulled int128/jira-to-slack:latest 2019-01-30 22:55:24 UTC+0900 INFO Waiting for EC2 instances to launch. This may take a few minutes. 2019-01-30 22:54:19 UTC+0900 INFO Created EIP: xxxxxxxxxxxx 2019-01-30 22:54:03 UTC+0900 INFO Created security group named: awseb-e-wi8p8yhmvx-stack-AWSEBSecurityGroup-E0I6S0124S51 2019-01-30 22:53:57 UTC+0900 INFO Environment health has transitioned to Pending. Initialization in progress (running for 9 seconds). There are no instances. 2019-01-30 22:53:38 UTC+0900 INFO Using elasticbeanstalk-us-east-1-xxxxxxxx as Amazon S3 storage bucket for environment data. 2019-01-30 22:53:38 UTC+0900 INFO createEnvironment is starting.
ログを見るとS3バケットやSG、EIPが作られていることがわかります。
わずか数行でDocker Imageをデプロイすることができました。PaaSらくちん!
お片付け
環境を削除するときは アプリケーションの削除 を選択すれば作成したスタック一式が削除されます。
ただし作成されたS3バケットは残ってしまいます。このバケットはデフォルトでは手動で消せない設定になっているので、バケットポリシーを手でいじってから消すようにしましょう。
参考
コマンドラインツールのeb
コマンドを使えばローカルやCIを経由して継続的にデプロイすることも可能なようです。今回は頻繁に更新するようなものでもないので実施しませんでした。また別の機会に検証してみようと思います。
2018年の振り返りと2019年の抱負的な何か
2018を雑に振り返る
特に目標も立ててなかったので、2018年のインプット/アウトプットを中心に雑にまとめてみる。
仕事では一度やったことの応用ならそれなりに立ち回れるようになった。でもまだやったことがないことに対するコミットはビビってしまう。
インプット
読んだ本
- カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで
- 業務システム開発モダナイゼーションガイド 非効率な日本のSIを変革する実践的ベストプラクティス
- Effective DevOps ―4本柱による持続可能な組織文化の育て方
- LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する
- PHPフレームワーク Laravel入門
- PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応
- 初めての自動テスト ―Webシステムのための自動テスト基礎
- 進化的アーキテクチャ ―絶え間ない変化を支える
- クラウドエンジニア養成読本
- Amazon Web Services 基礎からのネットワーク&サーバー構築
- Amazon Web Services クラウドデザインパターン設計ガイド
- コンテナ・ベース・オーケストレーション―Docker/Kubernetesで作るクラウド時代のシステム基盤 システム運用の考え方が変わる
他にもたぶんあるけど省略。
NPSが高いのはカイゼンジャーニーと業務システムモダナイゼーションかなぁ。
以下の積読は年始に読む(読む)
- このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法
- エンジニアのためのマネジメントキャリアパス ―テックリードからCTOまでマネジメントスキル向上ガイド
- インフラCI実践ガイド Ansible/GitLabを使ったインフラ改善サイクルの実現
本は去年はジュンク堂とかで買ってたけど、まずはメルカリで中古探してみて、なければヨドバシカメラで10%還元で買うようになった(そして読み終わって手元になくていいやつはメルカリに出品)。
参加した主な勉強会
転記が面倒だったのでconnpassを参照。
connpass履歴にないやつだとGopher道場、AWS Summit、Google Cloud Next、Jenkins User Conference、SpringFestとか行った。
時間に対する費用対効果を意識するようになったのか、特にAWS SummitとかGoogle Cloud Nextみたいな大規模なイベントは人の混雑に疲弊するので、特段発表者と話をしたいとか参加者と交流したいとか生で聞きたいとか理由がなければストリーミング中継やあとで資料見るでいいやというお気持ちになってきた。
その他
たたき売りされたUdemyをやった。
AndroidとReactのやつは途中でやめた。
アウトプット
作ったもの
Jenkins周りの連携のテンプレプロジェクトとか、GoのCLIアプリとか、簡単なiOSアプリとかLaravelのサンプルとか作った。
あとGitHub Pagesで雑なabout me的なLPを作った。
登壇発表
実は対外的に情報発信するのははじめての年だった。
- 開発支援ツールを導入・運用したときのつらみをまとめた - つばくろぐ @takamii228
- Swift愛好会 vol.31 で談義した #love_swift - つばくろぐ @takamii228
- XP祭りでLT発表した #xpjug - つばくろぐ @takamii228
- Jenkinsユーザ・カンファレンス東京2018に参加しました #jenkinsstudy #juc2018 - つばくろぐ @takamii228
Qiita
よく使うツールスタックの連携方法を備忘録としてまとめた。
- JenkinsとGitLabを連携する方法 - Qiita
- JenkinsとGitLabとMattermostを連携する方法 - Qiita
- JenkinsとCloudFoundry(Pivotal Cloud Foundry)を連携する方法 - Qiita
- JenkinsとGitLabとAWS CodeBuildを連携する - Qiita
その他
- 昨年関わってた複数のプロジェクトが社内で表彰された
- 日経SYSTEMの取材に対応して名前が載った
- ゆるい社内勉強会で複数回発表した
- CSPOを取った
2018年に新しく学んだ・身についた技術
もともとやってたGit+Jenkins的なCI/CDのパイプライン設計に加えて、Laravel・AWS周りをよく触った一年だった。そういえば春先はElasticsearchもいじってたなぁ。
- Golang
- Laravel
- Elasticsearch
- Kubernetes
- AWS
- GCP
- Jira + Confluence
- Value Stream Mapping
振り返り
- 良かったこと
- 未経験・新しい技術に対して学ぶ姿勢が継続できていること
- 勉強会やイベントに目的を持って参加できるようになったこと
- 対外イベントで登壇発表できたこと
- 一度作ったアウトプットを参照系の情報として再活用できていること
- 良くなかったこと
中途半端で終わってるものは、たぶん中途半端な状態で始めたからだと思う。
スモールゴールで始めたやつとかゴールがクリアなやつはそれなりに完遂できてるので、まずは中途半端な状態で始めないようにしよう。
2019年にやろうと思ってること
いくつできるかわからんけどとりあえず書いてみる。
- AWS SAを取る
- GolangをJava/PHPと同じくらい書けるようになる
- Spring Bootでアーキテクチャ設計できるようになる
- GCPをAWSくらいできるようになる
- Firebase + iOS or Android or JSで何か作る
- PHP以外のフロントエンド開発(html/css/jsとかブラウザとか通信とか)の設計がわかるようになる
- 外部イベントの運営・ボランティアスタッフをやる
- ブログを最低月一回投稿する
- 競技プログラミングを再開する
- 英語学習を復活して少なくともTOEICスコア(785)を更新する
- 3年後、5年後の自分の仕事・人生の具体的なイメージを持つ
社会人歴5年目だけどまだまだ自分がこれから進みたい方向性はぶれてるので、いろいろつまみ食いしながらレベル上げしたいと思ってる。
けどいろんなところに顔つっこみ過ぎている感もあるし時間は有限なので、かけるべき時間と期限を決めてうまくやっていこうと思う。
東京メトロTo Me Card Primeで年会費の元が取れるか1年かけて検証してみた
はじめに
みなさんは家計簿をつけていますか?私は社会人になってから本格的につけ始めました。
最近はキャッシュレス決済が話題になっていますが、キャッシュレスだとお金の流れのデータがトレーシングしやすいというメリットがあるので、個人的にはクレジットカードと合わせて積極的に使っていきたいと思っています。
そこで昨年の家計簿を見直してみると、近所のスーパー(現金払いじゃないとポイントがたまらない)とPASMOのチャージはまだ現金で払っていました。
PASMOのチャージはいつも手動でやっていて、残高が無くなりそうになってからいちいちチャージするのが面倒だと思っていました。
そういえばPASMOにはオートチャージのカードがあったと思い調べてみると、「To Me Card Prime」でオートチャージができることが判明。
To Me CARD Prime PASMOは東京メトロの車両の広告や駅での販促で見かけていてポイントが貯まるというのが気になっていました。
To Me CARD Prime PASMOでは以下の利用でメトロポイントを貯めることができます。
- 1乗車で平日10ポイント、休日は20ポイント(定期券区間は除く)
- To Me CARDによる定期券購入金額の0.5%
- 連携店舗の電子マネー利用に応じたポイント
- クレジットカードとしての決済金額の0.1%がNICOSのわいわいポイントとして貯まり、200ポイントが1000ポイント(1わいわいポイントあたり5ポイント相当)と交換可能
メトロポイントは1000ポイントを1000円分のPASMOのチャージ分として利用できたり、連携先の他のポイントに変換できます。またTo Me Cardを持っていればECHIKAやESOLAで優待が受けられます。
いわゆるソラチカルートと呼ばれるマイルに変換する陸マイル勢が有名。
http://www.to-me-card.jp/common/pdf/card_list.pdf
ただしTo Me CARD Prime PASMOは初年度は無料ではあるものの、年会費が2160円かかってしまいます。
そこで1年運用してみてこの年会費2160円がペイするのかどうか検証してみました。
乗車ポイント + 定期券・キャンペーンポイント + わいわいポイント×5 + その他ポイント ー 年会費2160円 =?
1年運用してみた
しょっぱなから設定をミスる
最初の一月、メトロポイントPlusの設定忘れで1ヶ月分のポイント取得を逃しました・・・。
会員サイトでPASMOのコードを登録しないと乗車ポイントがたまりません。
ポイント獲得結果の反映が月次バッチだから気づくのに遅れてしまいました。早くリアルタイムになってほしい。。。
設定手順はこちらから。
獲得ポイント内訳
気を取り直して結果を見ていきます。
1年間の乗車によって取得した乗車ポイント
月 | 獲得ポイント |
---|---|
12月 | 90 |
1月 | 60 |
2月 | 140 |
3月 | 140 |
4月 | 230 |
5月 | 330 |
6月 | 360 |
7月 | 160 |
8月 | 170 |
9月 | 80 |
10月 | 90 |
11月 | 180 |
合計 | 2030 |
月によってばらつきはあるものの月平均で150ポイントほど稼げることがわかりました。仕事での外出でメトロの利用が多かった月は稼げています。
キャンペーン、定期券購入分、電子マネー利用によって得られたポイント
現在もキャンペーンで入会で800ポイント、オートチャージの登録で1000ポイントもらえます。
内容 | 獲得ポイント |
---|---|
入会キャンペーン | 800 |
オートチャージ登録キャンペーン | 1000 |
定期券上半期 | 230 |
定期券下半期 | 230 |
電子マネー利用分 | 29 |
合計 | 2289 |
正直このキャンペーン分で元が取れることはほぼ確定してました。
ただしこのうち1800ポイントは初年度だけで、来年度はないので注意しないといけません。
NICOSわいわいポイントで得られたポイント
NICOSわいわいポイントと定期購入分のポイントは二重取りが可能です。
月 | 獲得わいわいポイント | 獲得わいわいポイント×5 |
---|---|---|
12月 | 0 | 0 |
1月 | 67 | 335 |
2月 | 12 | 60 |
3月 | 15 | 75 |
4月 | 18 | 90 |
5月 | 12 | 60 |
6月 | 22 | 110 |
7月 | 77 | 385 |
8月 | 23 | 115 |
9月 | 22 | 110 |
10月 | 21 | 105 |
11月 | 22 | 110 |
合計 | 311 | 1555 |
わいわいポイントは200ポイント単位で利用可能です。端数にならないように注意しないといけません。
結果発表
1年間で取得したポイントをまとめると以下になりました。
種別 | 獲得ポイント |
---|---|
年間獲得乗車ポイント | 2030 |
キャンペーン等での取得ポイント | 2289 |
わいわいポイントでの取得ポイント分 | 1555 |
合計(初年度キャンペーン含む) | 5874 |
合計(初年度キャンペーン除く) | 4074 |
年会費は2160円ですので、約3700円分、初回キャンペーンを除いても約1900円分プラスになっていることがわかりました。
昨年の現金チャージ分との比較
わいわいポイントからなんとなく察している人もいると思いますが、オートチャージを利用している関係でPASMOでの決済金額が大きく増えました。。。
従来は現金チャージで主に電車賃にのみつかっていたPASMOですが、オートチャージにすることによって電車賃だけでなく自販機やコンビニの支払い、PASMO対応のお店ではPASMO払いが当たり前になってしまいました。
特にコンビニの利用率が以前と比べてかなり増えたのかなと思っています・・・(ほぼ毎日利用するようになってしまった)。
チャージ金額分を昨年度と比較してみるとなんと約2倍に増えていました・・・😇😇😇
金額 | |
---|---|
昨年のチャージ分(定期代除く) | 101000円 |
オートチャージ変更後のチャージ分(定期・クレカ分除く) | 204000円 |
まんまとオートチャージの罠にハマってしまっています。
それでも現金チャージの手間や現金払いの手間が減っている分まぁいっかと思っています。
まとめ
1年かけて検証してみたわけですがオートチャージ効果によって支出は増えていたものの、年会費分を差し引いても結果的にはプラスになってたことがわかりました。
振り返ってみてメリット・デメリットをまとめると以下のようになるかなと思います。
- メリット
- デメリット
都内に勤務していて外回りでメトロの利用が多い方は、日々の乗車ポイントで余裕で年会費はペイできると思うのでぜひ申し込んでみてはどうでしょうか。
利用する交通機関がSUICA圏の人はおそらくVIEWカードで同様のことができると思うので調べてみると良いでしょう。
来年度はPASMOでの利用をちょっと自重してみて、それでも2160円以上使えるかを経過観察しようと思います。
また今はチャージ分をクレカ引き落とし分にまとめてしまっていてPASMOでの買い物の内訳を見れていないので、来年はマネーフォワードを活用して分類してみようと思います。
https://corp.moneyforward.com/news/release/service/20151120-cardreader-expense/
【おまけ】メトポは無料なのでやるべき
同時期にメトポという年会費無料のポイントサービスが始まりました。
メトロポイントクラブとメトロポイント、名前がわかりにくい・・・。
こちらは1乗車あたり平日3ポイント、休日7ポイントもらえます。
メトポでは1年間で以下のポイントを取得しました。
2018年5月31日までに申し込めば500ポイントもらえましたが、今はもう貰えないようですね・・・。
月 | 獲得ポイント |
---|---|
3月 | 3 |
4月 | 540 |
5月 | 79 |
6月 | 72 |
7月 | 34 |
8月 | 39 |
9月 | 16 |
10月 | 19 |
11月 | 36 |
合計(キャンペーン含む) | 838 |
合計(キャンペーン除く) | 338 |
こちらはやるだけでポイントがもらえるのでまだの方は忘れずに登録しておきましょう。
【追記】ToKoPoも無料なのでやるべき
メトポと同じように都営地下鉄での乗車でポイントがもらえるサービスがあることを教えてもらいました。こちらも無料なので登録しておきましょう。