re:Invent 2015のスライドをみたメモ
今年はre:Inventには参加せずオフィスで仕事しようと考えていたのですが、実は先週急遽入院していました。*1ちょうどre:Inventのスライドとビデオが公開されていたので、昨日今日とメモしたものをここに貼っておきます。
スライドしかみてないので、デモ中心のbreakout sessionはビデオをみたいところです。
ビデオはここ
スライドはこちら
Amazon Web Services’s slideshows on SlideShare
順序は適当です。
AWS Black Belt Tech シリーズ 2015 - re:Invent 2015 最新アップデート速報
- 日本のSAの小林さんがまとめてくれている
- AWS IoT
- AWSサポートのデバイスもあるのか
- Amazon QuickInsight
- よさそう。10$ / ユーザ / 月。安い。
- Kinesis, Amazon Kinesis Streamに名前変わったのか
- AWS Inspector
- AWS Import/Export Snowball
- AWSから提供するハードウェアを用いてデータのインポートとエクスポートを可能に
- 48TBを10Gbps or 1Gbpsでつなげる
- DCのデータ移すのとかに使えるのか
- AWS Database Migration Service
- AWS Mobile Hub
- Amazon EC2 Container Registry
- Docker registry。IAMと連携したり、暗号化できたりする。
- まだ使えない
- 多分beanstalk用にDockerコンテナ使うときにregistry自前で立てなきゃいけなかったりとか、そのへんの対策なんだろうな
- IAM連携できるの良さそう
- Amazon RDS for MariaDB
- よさそう。XtraDBやAriaをつかえる
- バージョンは10.0.17
- AWS Config Rules
- AWS Configにルール機能を追加することができるようになった
- Lambda functionとしてルールを作成できる
- ということはかなり自由にルールを作成できるということでもある。Lambda as UDFという感じだ。
- Cloudwatch Dashboard
- AWS Lambda Updates
- Amazon ECS機能追加
- CLIが出た。docker compose連携できる。
- むしろいままでdocker compose連携できなかったのか
- タスクスケジューリングがmulti-azになるようになった
- CLIが出た。docker compose連携できる。
- EC2まわりのupdate
(DVO303) Scaling Infrastructure Operations with AWS
(CMP305) Deep Learning on AWS Made EasyCmp305
- Datoの人のDeep Learning事例
(MBL308) Extending Alexa’s Built-in Skills. See How Capital One Did It
- Amazonの中の人によるAlexaの活用事例
- alexa = クラウドベースの音声サービス
- Siriみたいなやつ
- Amazon Echo = Alexaを使えるデバイス
- 開発者がAlexaのサービスをつかって独自のスキルをつくることもできる
- DynamoDBっぽいスキーマだ
(MBL305) You Have Data from the Devices, Now What?: Getting the Value from the IoT
SAのMichaelさんのスライド
- IoTにおけるデータの違いを学ぶ
(ISM402) Cost Optimization at Scale
- 1000台くらいEC2があるときにどうやってRIを採用するか、というあたりの自動化のはなし
- まあTableauのテンプレートとかでてきて便利かなって感じ
(DEV201) AWS SDK For Go: Gophers Get Going with AWS
- AWS SDK for Goの話
- awslabs/aws-go-wordfreq-sample のデモをひたすらやっていたっぽい
- Docker上でGo 1.5.1つかってる
- Videoでみるかな
(NET404) Making Every Packet Count
- EC2のnetworkingまわりのsenior manager
- RTTが2ms、帯域窓が100KBなら
- 100KB x 8bits/byte x 1000ms/s / 2ms = 400Mbps
- さくっと計算できたほうが良さそう
- 同様にRTTが100msなら8Mbps
- Receive window(RWIN) の設定は
net.ipv4.tcp_rmem
(最小、デフォルト、最大) で。- 最大域は
net.core.rmem_max
- 最大域は
- Congestion window - Wikipedia, the free encyclopedia
- Socket level diagnostic
- ソケットの診断するには
ss -ite
をつかう
- ソケットの診断するには
- TCPでの再送をトレースする
- brendangregg/perf-tools
tcpretrans
- Congestion control algorithms (in Linux)
- 再送のタイマーについて
- congestion control algorithmはパケットの消失について考慮する
- 現在のキューを観る
tc qdisc list
- EC2におけるネットワーキング
- Amazon EC2 enhanced networking
- M4, C4, C3, R3, I2, D2で適用されている
- re:Invent 2014のSDD419をみること
- 後半、実験のやつおもしろいかも
- 最後のhigh transactionの例はweb serverそのものという感じ
(ARC302) Running Lean Architectures: Optimizing for Cost Efficiency
Team Internetの人とAWSの中のひとのセッション
- ECSつかってcontainerのusageをまるっと1 instanceにおさめてく最適化、理論ではわかるけどうまく動いてるのかなこれ
- Spot Bid Advisor使うのは良さそう
- DynamoDBに問い合わせるときにはRAMにキャッシュすると安上がり
- over capacityな書き込みにはSQSをつかう
(STG406) Using S3 to Build and Scale an Unlimited Storage Service
- Amazon Clod Driveの中のひとのセッション。熱いのでは。
- Amazon Cloud Drive: Cloud Storage - Online Backup
- 写真は年間12ドル、全部何でもなら年間60ドルで保存できる、安い
- いろんなレベシェアのパートナーがいる。scanとか印刷会社とか。
- 100万単位のユーザ、10億超えのファイル、無制限なストレージ
- 写真、ビデオ、文章。メタデータ色々。
- 様々にインデキシングやキューを出来るようにしたい
- 9ページに構成。まあ予想通りというところ。ビデオのエンコーディングとかもやるのか。
- リージョンごとにs3バケットは1つだけ。
- s3のkeyはランダムに生成していて、key自体はDynamoDBに保存されている
- hot keyをさけるため。list operationはしていない
- s3ではAES256で暗号化
- 3リージョンで800サーバ以上ある
- 1時間に200GB以上ログでる
- ログはこれ JakeWharton/timber
- ログはs3 -> EMR -> s3でRedshiftにCOPY
- 機能を出しわけ出来る
- 0 -> 100%のユーザに適用、とか
- HTTP HEADで出し分けしている。設定ファイルはs3にある。
- 6つのチャレンジ。まずファイルサイズが様々なこと。
- 15MB以下だとPUTで。
- それより大きいならmultipart upload APIで。
- partは5MBで
- ただpartは10000までしか分割できないので、ファイルサイズ50GBが限界
- 早くアップロードすること
- 接続の中断
- ダウンロードサイズもばらばら
- リソースなくなるとでかいファイルのダウンロードが失敗する
- サイズごとにダウンロードのロジックをわけた
- 5MB以下の場合
- 単一のGET
- 失敗したら単純にリトライ
- 全オブジェクトの90%がこの大きさ
- でかいファイル
- 並列にダウンロード
- partは5MB
- 他の操作に影響されないスレッドプールを容易
- コネクションは再利用する
- 一回だけリトライ、だめならtimeout
- Apache HTTPClientをつかっている
- 並列にダウンロード
- でかいイメージのサムネイル
- サムネイル取得に 3000req/s とかくる
- 一時的なサムネイルの生成をしている
- 48時間でexpire
- keyは(customer id, image id, image version) のhash
- でかいファイルの直接ダウンロード
- 一次サインしたs3のURLにリダイレクトする
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
- デモみないとよくわからん
(NET302) Delivering a DBaaS Using Advanced AWS Networking
- Instaclustrの人
- Cassandra as a Service
- 300インスタンス
- 最初は顧客ごとにAWSアカウントわけてた
- アクセスとか請求分かりやすいけど、管理しづらい
- 全部Instaclustrのアカウントで管理するようにした
- どうやって顧客のクラスタからのアクセスを受け付けるようにするか
- 静的なipやっぱり欲しいよねっていう話
- VPC Peeringした。まあそうだよね。
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
- IAMのSenior Security Engineerのひと
- あーSparkから単純にクエリするだけじゃなくて、Spark Streamingで異常検知もしよう、みたいな話か
- alertにしようという。
- Spark Streaming, 3秒ごとらしい
(BDT404) Large-Scale ETL Data Flows w/AWS Data Pipeline & Dataduct
- Courseraの人
- 1500万learner, 1300コース、おおいなー
- RedshiftをDWとしてつかってる
- 1200テーブル・・
- 167人がRedshiftつかってる。3000万クエリ。やばい。
- coursera/dataduct
- 結構よさそう
(SEC324) NEW! Introducing Amazon Inspector
- AWSのPrincipal Security Engineerの人の発表
- InspectorはEC2にserviceとしてインストールして使うらしい
- Demoあるのでvideoみたほうがよさそう
(MBL402) Mobile Identity Management & Data Sync Using Amazon Cognito
- Cognito IdentityはIDあたえたりOpenID連携したりするやつ
- Cognito Syncなんていうのがあるのか
- CognitoのIDにはIAMのひも付けもできる
- IAMというかRoleか
- identifyされていてauthされているならtokenをもらえるようにできる
- CognitoのtokenはJWTのフォーマットになってる
- Unauthenticatedな場合にはSTSで一時的なcredentialを発行できる
- Cognito Sync
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
- Sonyのエンジニア。日本人2人の発表。
- もともと自社?IaaSにのっててモノリシックな環境。
- デプロイに半日・・設定管理manual。。。
- fluentdのロゴが
- beanstalkのsgとかどうしたんだろう
- あーDockerイメージのdisk容量問題だ
- appendix、実は大事なところだ。drawingのtimeoutとか。
- 面白かった
(DEV301) Automating AWS with the AWS CLI
- AWSの中の人?Jamesさん。
- Commits · aws/aws-cli
- aws-cliの開発してるひとかな
- 1コマンド1パラメータの出力にするとよい
|| errexit "err msg"
とかでエラーハンドリングしやすくなる
- 1コマンド複数出力のものをそれぞれ
aws
コマンドにわたしたいfor
とかxargs -I {}
- 実行するコマンドのパラメータをJSONに保存して実行したい場合
- jmespath/jp をつかうとJMESPathについてとりだしやすくなる
- でもamiのidとかinstanceのidとかはparametarizeしたい、みたいなことがよくある
instance=$(aws run-instance --image-id ami-1234 -query Instance[0])
みたいにしてはめ込む- query()を用意しておく
query() { jp -u "$2" <<<"$1" }
instance_id=$(query "$instance" InstanceId)
とすればidだけとれて便利- 前は
--output text
とかやってsedしたりしてたけど、--output json
でjp
つかうと便利だよ、とのこと
resource_exists()
はまあそうなるよな、という感じ
(DAT205) NEW LAUNCH! Introduction to AWS Database Migration Service
- 新しくでたAWS Database Migration Serviceの発表
- 違うDBの種類、異なるエンジンでもマイグレーションするよ、というサービス
- VPN経由でオンプレとAWSつないでマイグレーションすることができる
- AWS Schema Conversion Toolが出た
- ビデオみないとよくわからない
(CMP403) AWS Lambda: Simplifying Big Data Workloads
- FireEyeのMartinさんの発表。Lambda事例か。
What to Expect from the Session
は今回の発表スライドのフォーマットに指定されているのかな- Cyber Security & Malware Protection | FireEye
- ユーザのイベントを蓄積して、その中からevilなものをみつける、ということをしたい
- オンラインでindexingしているものと、s3に保存しているcold dataがある
- 入力: Questions, 出力: Answersと表現するの珍しいかも
- Lambda driven search and analyticsが気になる
- EMRでは異常検知をやってる
- k-means, 線形回帰、geographic time-lining
- Lambda
- レポート、可視化、統計値
- クラスタリング、相関、線形回帰、など
- レポート、可視化、統計値
- 大きさ: 5TB/dayくらい
- 1イベント: 3KB, 20K events/s
- Building Scalable and Responsive Big Data Interfaces with AWS Lambda - AWS Big Data Blog
- Lambda functionの複数走らせるためにfrontにnode.jsのアプリをおいている。ジョブのキックはここから。
- そこからLambda functionのprocessをspawnする。結果の集計をcascadeのアプリが担っている
- インメモリでLambda functionのspawnをキューしている
- cascadeではLambda functionでのcallbackをうけとって、集計して結果を返す。つまり、cascadeはMapReduceにおけるReduceの役割もしているといってよい
- ユーザに結果を返すにはnode.jsアプリからSSEで返している
- Lambda functionの中からs3のデータを読んでいる。
- 解凍、中見る、カウント、などなど。
- s3からのデータ取得は並列にやるとよい。いつものパターン。
- 面白い。
(NET403) Another Day, Another Billion Packets
- AWS SecurityのEricさんのプレゼン
- 割愛
(NET409) How Twilio Migrated Its Services from EC2-Classic to EC2-VPC
- Twilioの @sumbry さんのプレゼン。EC2 ClassicからVPCへの移行話。
- 2008年からAWSつかってて多くのサーバがEC2 Classicで動いてた
- あーグローバル展開する段階でregionまたぐときにregion間通信のためのproxy、というかNATつくってたのか
- あれ、VPCじゃないとHVMとかENIつかえないんだっけ
- Twillio Cloud: VPC基盤でのTwillio
- EC2 Classic環境とは完全に切り離して用意
- マイグレーションの手順
- 移行用のツール作った
- IP Tunnel Manager / ClassicLink
- ああ、もともと作ってたらClassicLinkでてきたからそっちつかった、みたいな話かな
- Global Service Discovery
- クラスタのなかのipを保持して、要求された時に返すagent
- HAProxyで分散ロードバランサ
- あーアプリからDBとか叩くときにはHAProxy経由にしているってことか
- Config-Renderer
- HAProxy Configsみたいなやつ
- Global Service Discoveryの情報を取得して返す
- IP Tunnel Manager / ClassicLink
- 無事移行進んでる
- 巨大なマイグレーションを一気にする必要はないんだよ、といういい話
(MBL317) NEW! Introducing AWS Mobile Hub
- 新サービス、AWS Mobile Hubの発表
- Demoみないとわからんという感じ
(ISM317) Amazon WorkMail: Corporate Email in Less Than 10 Minutes
- Amazon WorkMail、っていつでたんだっけ・・
(GAM406) Glu Mobile: Real-time Analytics Processing og 10 MM+ Devices
- Glu Mobileの解析エンジニアの人の発表
- DAUが400~600万、全世界で累計10億以上のインストール
- 要件など
- 最初はPythonのフロントアプリ -> s3 -> Redshiftな構成
- ETLはHadoopクラスタで。 Big Data as a Service — Hadoop and Spark as a Service を使っていた。
- 可視化はTableau
- 解析用のSDKつくって、必要なデータを集め始めた
- リアルタイム集計にはStormを利用
- Kinesis、マシンごとのシャードを増やそうとすると結果として小さいファイルがたくさんできてしまう
- IPのないレコードがあった場合
- Kinesis Streamのシャードのスケールには awslabs/amazon-kinesis-scaling-utils をつかう
(DAT207) Amazon Aurora: The New Amazon Relational Database Engine
- AuroraのGMの人の発表
- 去年Auroraの発表聴いたきり、ほとんどキャッチアップしてないなぁ
(DAT405) Amazon Aurora Deep Dive
- Aurora, Redshift, EMRのVPの人の発表
(BDT323) Amazon EBS & Cassandra: 1 Million Writes Per Second
- CrowdStrikeの中の人の発表。
- CrowdStrike
- endpoint protectionのビジネス。500000 event / sec.
- 自明の理?
- Never run Cassandra on Amazon EBS これはw
- 要件
- 数百万デバイスから1PBのイベント来る
- バースト時は100万write / sec ...
- 95%が書き込みで5%がread。すごい要件だ・・
- 最初は Cassandra + Titanで
- Titan: Distributed Graph Database
- Netflixでも2014年に1M writes / secの追試をしている The Netflix Tech Blog: Revisiting 1 Million Writes per second
- EBSつかったらc4.2xlargeだけ使うより安くなるっていう試算、なんともすごいな
- Cassandra Summit 2015: Real World DTCS For Operators
- これ、日にちの経ったデータほどcompaction効かせる、ってことかな?
- 最初の立ち上げ: Cassandra 2.0.12, m3.2xlarge, 4TB EBS GP2 10000 IOPS
- ベンチマークのwriterにc4.4xlarge 20台もつかうのか。
- もろもろベンチとって達成
- Ubuntu, HVM, XFS
- Java8, G1GCか
- ああそういえばEBSのpre-warm必要なくなったのか
(ARC401) Cloud First: New Architecture for New Infrastructure
- Monsantoの人の発表
- 1000? VPCすごいな
- MonsantoCo/cloudformation-template-generator
- Scala製、CloudFormationのテンプレートを生成する
- MonsantoCo/stax
- CloudFormationのstackを管理する
- shell scriptだった、長い
(BDT305) Amazon EMR Deep Dive and Best Practices
- AWSの人とFINRAの人の発表
- EMR 4.1での話
- Zeppelin これ知らなかった。Spark向けnotebookか。
- OozieとかHueがすんなり使えるようになったのはいいよなぁ
- EMRFS
- DynamoDBつかってmetadataおくようにするとlistオペレーションが速くなる
(NET301) New Capabilities for Amazon Virtual Private Cloud
(DVO314) USA Today Uses Chef & AWS for Infrastructure Standardization
- USA TodayのChef事例
- 発表はGannettとChefの人
- Gannettでは複数メディアを運用していて、社内PaaSみたいになっている
(DAT308) Yahoo! Analyzes Billions of Events a Day on Amazon Redshift
- Yahoo!でのRedshift事例
- HadoopクラスタもあるのにRedshiftつかうのか
- Redshift
- 21 dc1.8xlarge, 20億イベント / 日, 1200クエリ / 日, 27TB
- Pigで加工してs3に置いたものをReshiftにロードしてる
- airbnb/airflow つかってる
- ETL
- upstream
- ClickstreamデータをOozieのhourly batchでHDFSに
- botoつかってs3へ
- downstream
- こっちはairflow
- upstream
- JOINをなるべく減らす工夫をしている
- ETLをデフォルトのキューでやるな、っていうのはそうだよなというところ
- Workload managementつかおうという話
- ユーザのリテンション分析用に多次元テーブルを用意していた
- 性別とかOSごととかにコホートだしていれておく
- いわゆる中間テーブル
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
- PMの人の発表
- API Gatewayよくわかってないからみておく
- SwaggerつかうとAPI Gateway設定を簡単にかける
- Swagger | The World's Most Popular Framework for APIs.
x-amazon-apigateway-integration
- awslabs/aws-apigateway-swagger-importer をつかうと簡単にswaggerでの設定をAPI Gatewayにインポートできる
credentials
でIAM設定も書ける
- API Gateway Mapping Template Reference - Amazon API Gateway
- Mapping Template便利らしい
- authorized api
- IAMで
execute-api:invoke
- resourceについてはAPIごとに許可の設定を書ける
API_ID/*/POST/pets
とか。
- IAMで
- IAM Policy Elements Reference - AWS Identity and Access Management
- fine-grained access permissionについてはここにのってる
- awslabs/api-gateway-secure-pet-store にサンプル全部載ってる
(CMP301) AWS Lambda and the Serverless Cloud
- AWS LambdaのGMの人の発表
- Lambdaのresource Sizingについて
- 23段階のpower levelがあるとのこと
- Scheduled Functions
- Versioning
- uploadしたら勝手にバージョニングしてくれる
- シンプルに1,2,3とincrementされるだけ
- 名前もつけられるっぽい
- alias
- uploadしたら勝手にバージョニングしてくれる
- VPCアクセスが可能に
- subnetとsecurity groupを指定するかたち
- ElasticacheとかRDSとかVPC内のEC2とか・・
- 年内に全部のregionで使えるようにするとのこと
(ARC309) Getting to Microservices: Cloud Architecture Patterns
- gilt.com の事例
- ブランドの商品を会員限定価格で提供してるサイト
- 正午にセールしてる、スパイクする
- 2007年ごろはRoRのモノリス
- 2011年にはJavaで
- Voldemortつかってるのか
- 各チームはそれぞれのビジネスラインにそって開発
- 2015年(現在)
- LOSA(lots of small apps) & microservicesに
- microservicesのレイヤはScalaで
- microserviceの構成
- 各サービスはだいたいJVM環境
*監視はNewRelic
- ScalaかJavaかJavaScript
- Scalaの場合はPlay, あとは内製のservice framework
- ScalaかJavaかJavaScript
- 各サービスはだいたいJVM環境
*監視はNewRelic
- ZookKeeperをservice discoveryにつかってる
- クライアントからZKに問い合わせ。サービス名でqueryしてURLをもらう形
- LBを挟んでapiのnodeに問い合わせる
- このあとDC -> VPCに移行
- microservice
- Dynamic Service Registry
- サービスごとにデータストアも分割したらしい
- 1コンテナ / 1インスタンスについて複数のサービスを置くのはやめた
- ユーザからのリクエストから複数のserviceに問い合わせるケース
- 毎回問い合わせるのではなくてcacheをつかって問い合わせを減らす
- リクエストのtrace
- serviceをまたいでリクエストが多段になるときも、一貫したIDをつけておくこと
- たとえば商品カタログはうまくでていても、決済が失敗してる、とかがわかるようになる
(NET405) Build a Remote Access VPN Solution on AWS
- SAの人の発表
- オンプレでもAWSでもいいけど、VPNの入り口をAWSにすればVPN経由のユーザについてのcapacityとかを柔軟にできるよ、という話
- CloudFormationでぽちっとやればできると
- VPCをたてる
- この構成のスケール例
(MBL311) NEW! AWS IoT: Securely Building, Provisioning, & Using Things
- AWS IoTのセッション
- ビデオみたほうがわかりやすそう
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
- SAの人のセッション
- Using the Amazon ECS Command Line Interface - Amazon EC2 Container Service
- docker composeの設定をECSでつかえる
ecs-cli configure
ecs-cli compose build
とか
- JenkinsのSlaveをECSでつくるデモ
- これもビデオでデモみたほうがよさそう
(CMP406) Amazon ECS at Coursera: A general-purpose microservice
- CourseraのECS事例
- batchでやってること
- レポーティング
- Gradeだしたり学習者のデモグラだしたりとか
- レコメンドのemailつくったりもしてる
- 2012年1月ごろにやっていたバッチ処理の方法
- バッチジョブについてほしいもの
- いろいろ検討した
- 自家製でバッチジョブ用の何か作る?
- 調整とか同期まわりがめんどう
- Mesos
- 本番に入れるのが大変
- kubernetes
- opsは大変かも
- 自家製でバッチジョブ用の何か作る?
- ECS使いたい、がツールいろいろつくった
- Iguazu
- Long-running jobs at Coursera - Coursera Technology
- ECS用のジョブスケジューラ、Scala製
- IguazuのfrontからSQSでbackendに電波して、backからECSのapiを叩くようになってる
- Iguazuの管理画面からscheduledジョブをつくることもできる
- ジョブのデプロイはJenkinsで
- パッケージをzip、Docker imageを作成、registryにpushしてECSのAPIで引っ張るだけ
- ログ
/var/lib/docker/containers/*
にある- Sumologicにおくってる
- ジョブごとにnameとIDふってるのでそれで探せる
- メトリクスはDatadogつかってる
- Iguazu
- 規模は65ジョブ、44のスケジュールジョブ、1000job / day
- 別の話題、containerで危ないジョブを動かす
- Courseraのプログラミングの課題がある、それをテストするのにコンテナをつかってる
- CUDA, Scala, rails, Python, JavaScript, C ...
- 悪用されないように、課題を評価したい
- Courseraのプログラミングの課題がある、それをテストするのにコンテナをつかってる
- GrIDというシステムを作った: Grading Inside Docker
- ECS + Iguazu
- AWSアカウントをわけて、GrID用のアカウントで評価する
- GrID側でECSも動かす
- networkアクセスを限定、実行時間やリソースを限定
- VPCでinbound/outbound共に制限
- coursera/amazon-ecs-agent
- コンテナごとに独立したネットワークスタックになるようにagentを変更
- root権限周り
- DockerのsocketをDockerコンテナの中にいれるようにした
- セキュリティのモニタリングに Threat Stack
- ペネトレーションテストに Synack もつかっている
(DVO401) Deep Dive into Blue/Green Deployments on AWS
- blue/greenのパターン
- DNSのcutoverだとやっぱりrollbackがなーというところ
- ELB以下のASG切り替え
- rollbackも簡単
- ELBの暖気も、もともとあるのを使うから必要ない
- launch configの切り替えによる方法
- まあできるけど自分ならやらないかな
(CMP401) Elastic Load Balancing Deep Dive and Best Practices
- AWS Principal Engineerの人
- awslabs/s2n
- ELBでつかってるっぽい
- SSL Security Policies for Elastic Load Balancing - Elastic Load Balancing
(BDT319) New! Amazon QuickSight: Cloud-native Business Intelligence
- Directorの方。Amazon QuickSightは今回リリースされたもの。
- Amazon QuickSight - Fast Business Intelligence by AWS
- 対応するデータ
- RDBやNoSQLはもとより、EMR, S3, ファイル、streamingのデータソースもサポートするらしい
- SPICE: Super-fast Parallel In-memory optimized Calculation Engine
- columnarデータを2から4倍圧縮する
- SQLっぽい文法で扱える
- fully managed
- デモあったっぽい。ビデオみるか。
- やっぱりやすいなー
- ただGB課金は結構でかいかも
- Enterprise EditionだとAD連携とかアクセスコントロールができる。あと2倍速い。
- あとでビデオみよう
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from Heroku to AWS
- Remindの方
- 先生のためのmessagingサービス
- 3000万ユーザ。USのpublic schoolの半数くらいで使われている
- 20億メッセージがやり取りされている
- 従業員50人以下、エンジニアは30人以下
- Herokuはいいけど
- 全部のappがpublicにアクセス可能
- DBさえも
- 制御できるところも限定されてる
- 全部のappがpublicにアクセス可能
- The Twelve-Factor App 初めて知った。webアプリが守るべき12の要素
- お、Goで書いてるのかな
- 最初はCoreOS + Fleetでやってたらしい
- routerはnginx
- Dockerコンテナのbuildは
git push
したら外部CIでやってる - Introducing Empire: A self-hosted PaaS built on Docker & Amazon ECS | Remind Empireっていうのはこれのことか
- ECS + DockerでつくるPaaS
- remind101/empire Goだった
- Dockerコンテナのログつかうのにlogspoutつかってる
- gliderlabs/logspout
- Dockerコンテナのためのlog router
- logはSumologicにながしてる
- Docker imageのビルドには remind101/conveyor をつかっている
- Introducing Conveyor: A fast build system for Docker images | Remind
- cacheレイヤをうまく使うようにしている
*1:結局月曜日から土曜日まで入院していました。これでアメリカ出張中だったら、、と考えると・・。チームのメンバーには迷惑をかけてしまいました。
ATSに対応できているかチェックするツールats_checkerを書いた
追記: El CapitanにATS用のチェックツールが nscurl
に付属したのでそちらをつかうことをおすすめします。
App Transport Security Technote: App Transport Security Technote https://developer.apple.com/library/watchos/technotes/App-Transport-Security-Technote/index.html#//apple_ref/doc/uid/TP40016240-CH1-SW7
/usr/bin/nscurl --ats-diagnostics [--verbose] URL
のように利用できます。
iOS9でApp Transport Securityが適用されます。
要約するとサーバ側でATSに対応するなら以下のことが必要です。
- TLS 1.2以上を使うこと
- Cipherは指定されているものを使うこと
ということでURLがATSに対応できているか*1、というのを調べる簡単なツールを書きました。
以下のように使います。acceptableではない場合にはtlsオブジェクトをとりあえずデバッグのために出力しています。(ちゃんと値を見せてあげないとわかりづらいですが・・・
-> % ats_checker https://google.com https://google.com is acceptable for ATS -> % ats_checker https://example.com https://example.com is acceptable for ATS -> % ats_checker https://apple.com https://apple.com is not acceptable for ATS debug info: &tls.ConnectionState{Version:0x303, HandshakeComplete:true, DidResume:false, CipherSuite:0xc014, NegotiatedProtocol:"", NegotiatedProtocolIsMutual:true, ServerName:"", PeerCertificates:[]*x509.Certificate{(*x509.Certificate)(0xc82049c000), (*x509.Certificate)(0xc82049c480)}, VerifiedChains:[][]*x509.Certificate{[]*x509.Certificate{(*x509.Certificate)(0xc82049c000), (*x509.Certificate)(0xc82049c480), (*x509.Certificate)(0xc8203aed80)}}, SignedCertificateTimestamps:[][]uint8(nil), OCSPResponse:[]uint8(nil), TLSUnique:[]uint8{0x5e, 0x2e, 0xd8, 0x2d, 0x9c, 0x75, 0x56, 0xa4, 0x68, 0xa4, 0x71, 0x61}}
これでATS対応もばっちりですね!
任意のコマンドを適当にリトライするツール、retryを書いた。
外部サービス叩いたりしてるとよく手元でretryすることになったりする。shellで書いても良いのだけど、Goで書いてみた。
suzuken/retry https://github.com/suzuken/retry
-> % retry Usage: retry <command> -initialInterval int retry interval(s) (default 1) -maxElapsedTime int Max Elapsed Time(s) is limit of backoff steps. If the job spends over this, job makes stopped. If set 0, the job will never stop. (default 10000) -maxInterval int cap of retry interval(s) (default 1000)
retry
を頭につければよしなにリトライしてくれる。
-> % retry command_not_found fake 2015/08/26 19:53:28 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 19:53:29 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 19:53:31 err: exec: "command_not_found": executable file not found in $PATH ...
リトライの間隔や、最高試行時間をつけることもできる。例えばジョブによってあまり何度もリトライしたくないものなどは最大試行時間を短めにするといい。
$ retry -initialInterval=2 -maxElapsedTime=8 command_not_found 2015/08/26 16:57:37 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:39 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:43 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:49 err: exec: "command_not_found": executable file not found in $PATH operation failed: exec: "command_not_found": executable file not found in $PATH
もしよかったら使ってみてください。
Go 1.5でgo docがちょっと便利になった
$ go doc fmt.Sprintf func Sprintf(format string, a ...interface{}) string Sprintf formats according to a format specifier and returns the resulting string.
見やすくなりましたね。
iTerm2でビープ音を消す
iTermのバージョン: Build 2.1.1
Preferences -> Profiles -> Terminalの中のNotification -> Silence bellをonに。
YAPC::Asia Tokyo 2015 前夜祭に行ってきた
YAPC::Asia Tokyo 2015 の前夜祭に行ってきました。仕事終わりに埼京線からりんかい線に乗り継ぎ、国際展示場へ。ビッグサイトはちょっと時間がかかるかなと思っていましたが、空いていたので渋谷から30分ほどで着きました。
聴いたトークは3つ。メモがてらツイートしたことをはっておきます。発表者のみなさまありがとうございました。
PHP帝国の逆襲!(を願うPHPerが話す最近のPHPについてのクイックツアー PHP7対応版) - YAPC::Asia Tokyo 2015
YAPCなのに前夜祭はPHPとRubyのセッションから始まったようです。私はuzullaさんのトークを聴きにいきました。去年も聴きたかったのですが機会を逃してしまったので1年経て聴けたことになります。会場が盛り上がってて最高でした。最近HHVMをいろいろ手元で試していたのでトピック的にも面白かったです。PHP7でまたいろいろ良くなりますし、今後も楽しみです。あと「負債のない言語があるか?ないだろ。」的な流れが最高でした。
PHP最高です #yapcasia pic.twitter.com/I4AOj6UyVw
— suzuken (@suzu_v) 2015, 8月 20
この間HHVMをOSXでビルドしようとしたらこけたのでDockerでビルドしてます #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
動的片付けの言語は今後use strictを実装していくことになるのだろうか… #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
. @uzulla さんのトークを聞いていると「PHP7最高なのでは?」という気持ちになるしやっぱりPHP最高だしビールを飲みながらPHPの話を聴くのは最高なのではと思わずにいられない #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
PHP6の話はやめるんだ!!!!1 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
はてなブックマークのトピックページの裏側 - YAPC::Asia Tokyo 2015
Elasticsearchのaggregationをごりごりと活用している事例でした。はてなブックマークは日々使っているので中のお話が聴けて新鮮でした。トピックの生成、Elasticsearch 6ノードで実現されているのが最も驚いたところです。2時間ごとの生成とおっしゃっていたけれど、日によってトピックの量が変わるとジョブの時間も伸びていくのだろうか・・・など思いつつ、興味ぶかいセッションでした。
お、 #elasticsearch の話だ。Significant Terms Aggregationはたしかに便利。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
Function Score Query
https://t.co/B5GGCDTVs7 の話。scoreでの絞り込み結果をそのまま1クエリでできるのはやっぱり便利 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
はてなブックマークの規模でaggregationとかどれくらいの負荷かかるのかな。Elasticsearchクラスタの運用面での話も気になる。あとトピック生成をどのタイミングでやってるか、とか。新しい記事が追加されたらそのタイミングでやる、とかだと結構大変そう #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
あとAnalyzerはkuromojiなのかな? #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
トピックの名前付けには Significant Terms Aggregation
https://t.co/IcIEQFi2AS を利用して重要語を抽出。その後重要文を抽出するようにしている。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
係り受け解析にはCabochaを利用。前処理気になる。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
トピックタイトルを短くするタスク。スマホアプリとかだと短くしたい。全角10文字以下、など。重要語の数を減らしながら短くする。基本的にはタイトル生成の流れと一緒。指定した文字数になるまで繰り返して短く、と。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
二時間ごとにトピック作るのなかなか大変だ。ES6ノードで全トピックを生成と。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
トピックは辞書作るより前に作られる。あー、もう新語獲得に近いタスクなんだろうなぁ。未知語でもうまくトピックになるようにする必要があるということかー #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
我々にできるOSSとそのコミュニティの育てかた - YAPC::Asia Tokyo 2015
前夜祭最終セッションはモリスさんのセッションを見に。モリスさんの経験あってこそのセッションだなあと思いました。私は利用者になってしまうことがほとんどなので、こうしてもっと自分でごりごりとOSSとして出している話を聴くと、ああもっと姿勢を変えていかないとなあと思いました。最後t-wadaさんがQ&Aで質問されていたソフトウェアがコンパクトで美しいことと、ツールの実用性との両立というのは興味深い話でありました。
あーこれはNorikraが安定しすぎていた話かなぁ。放っておいても動くから困らなかったし・・・ #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
"We can't create a super product at first" これは本当にそうだなー #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
Add new Logging driver "fluentd" by tagomoris · Pull Request #12876 · docker/docker
https://t.co/eX6LJN0JjV の話で盛り上がっている #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
ツールがコンパクトで美しいことと、何かを実現するためにソフトウェアが大きくなっていくことの話。これは、両立するのは大変だよなぁと。Goのcoreとかはこのへんうまくやってるなぁという印象がある。 #yapcasia
— suzuken (@suzu_v) 2015, 8月 20
その他
前夜祭には初めて行ったのですが、ビールが出るのですね!おいしくいただきました。ビッグサイト、広くて明日から人もたくさんくるでしょう。運営の方には頭が上がりません。明日からも楽しく、無事に3日間が終えられることを祈りつつ、楽しんでいきたいと思いました。
JAWS-UG Meguro #0 でAWS SDK for Goについて発表してきました
「カジュアルなAWSの集いをやりますよ!」というお誘いをいただいて、行ってきました。
私からは最近触り始めたAWS SDK for Goの紹介をしました。
www.slideshare.net
Gist版: https://gist.github.com/suzuken/0a7f64a6016b3edfe2c4
AWS SDK for Goはまだ開発版で、プレビューの段階です。インタフェースはわりとカジュアルに変わってしまう段階では有りますが*1、ひとまず雰囲気だけでも掴んでもらえれば、と思い紹介してみました。
発表中でも触れたように、内部ではJSONで書かれたAWSのapi仕様に則り、 go generate
をつかってコードが生成されるようになっています。また、Exampleをうまくつかうようにしていたりと、このあたりも面白いところです。
Testable Examples in Go - The Go Blog
AWSのみなさま(と、 @kani_b 氏)、会場・運営どうもありがとうございました。
*1:実際にサンプルとして書いてきたコードが、発表前日の変更で壊れたりもしました・・