はじまる

適当な事を適当に書く

Heroku と Docker と 12 Factor

Heroku が目指した世界観(12 factor app)を実現しようとしているのが Docker なのよね。「なぜDocker がひろまったか?」というのは、技術的なことより、Heroku が Salesforce のものになってしまった故、AWSGoogle が 12 factor app インフラなビジネスを自分たちが主導できるように環境を整えた、という政治的な利害関係があると思う。

22/Apr/2017 (Sat) - Diary

Docker に触れる前に Heroku にまず触れてみるといいと思う。というか大抵の人は Docker 使うより Heroku を使ってしまったほうが幸せなんじゃないですかね。僕は金ないので個人では Docker 使いまくってますが、所属してる会社には金があるので Heroku を使っている。いずれにせよ、 Heroku に慣れてみると Docker やその周辺に散在する思想によって何が得られるかがはっきりとしてくる。

超同意。

建築設計の記述方法

情報システムというのは多数の人が関わるものであり、適切な情報の伝達というのは常に重要なトピックです。そのなかでも、そのシステムが何を目的として、どう構築されるか、どのような要素で構成されているか、どのように振る舞うか、などの情報の記録先、まぁ設計書と呼ばれるものだけれど、どのようなものが最適なのかというのは常に悩ましいものだと思います。いやまぁ、いわゆるテンプレートは世に数多あるし、それらに沿えば大体のケースでは間に合うんだけど。常により良いものへの改良は考えておきたいと思うのが男の性ではないかと考えています。

 

ということで、今までにない情報システムの設計記述方法の検討のため、未だ私が知らないアプローチのネタはないかと思って、最近は建築関係の設計書の記述について学んでます。正確にいうと学ぼうとしている。どう学んでいいかわからない。とりあえず書店で、建築関係の書物など立ち読みしたりしてます。パース図?などみてるだけでも楽しい。この建物の目的はなにか?重視すべき事柄はなにか?制約事項はなにか?など割とシステム設計と観点が似通っているように感じます。

 

とりあえずいまは学び方を模索している段階。続く。

atlassian 製の AWS モックツール LocalStack をさわってみた

Local Stack とは

https://i.imgsafe.org/fe38108cd6.png

こいつです

bitbucket.org

LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications. Currently, the focus is primarily on supporting the AWS cloud stack.

クラウドアプリのテストやモックに使うフレームワークです。現在はとりあえず AWS のサービスに対応することに注力しているみたいです。手間の削減や、お金の節約になるね!仕事のプロジェクトに本格導入するのはまだ怖いけど、手元のプログラムとかのテストとかには良さそう!ただ既存のシステムへの改修のテストにつかうのは、既存の模倣が大変そうなのでいまのところシンドそう!

起動

docker run -it -p 4567-4580:4567-4580 -p 8080:8080 atlassianlabs/localstack

こんな感じで、localhost に各AWSサービスを偽装したエンドポイントが立ち上がります。

...
Starting local dev environment. CTRL-C to quit.
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
 * Restarting with stat
Starting local Elasticsearch (port 4571)...
Starting mock ES service (port 4578)...
Starting mock S3 (port 4572)...
Starting mock SNS (port 4575)...
Starting mock SQS (port 4576)...
Starting mock API Gateway (port 4567)...
Starting mock DynamoDB (port 4569)...
Starting mock DynamoDB Streams service (port 4570)...
Starting mock Firehose service (port 4573)...
Starting mock Lambda service (port 4574)...
Starting mock Kinesis (port 4568)...
Starting mock Redshift (port 4577)...
Starting mock Route53 (port 4580)...
Starting mock SES (port 4579)...
Starting mock CloudFormation (port 4581)...
...

ダッシュボード

http://0.0.0.0:8080/ にアクセスすると表示される。正直まだちょっと何につかうか、わからない。

f:id:satorusangakoronda:20170428175242p:plain

つかってみた

トーリー

DynamoDB の テーブルをつくって、Item を挿入できるか

1. DynamoDB テーブル作成

aws cli をつかって、テーブルを作成してみます。--endpoint-url オプションを LocalStack の 偽装エンドポイントを指定します。

$aws dynamodb create-table \
     --endpoint-url=http://localhost:4569 \
     --table-name Music \
     --attribute-definitions \
         AttributeName=Artist,AttributeType=S \
         AttributeName=SongTitle,AttributeType=S \
     --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
     --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

こんなレスポンスが返って来ればOK

{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:000000000000:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 1,
            "ReadCapacityUnits": 1
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1493371126.181
    }
}

テーブルができたみたいです。

2. DynamoDB テーブルの確認

他のコマンドを実行してみます。dynamodb のテーブル一覧を取得してみましょう。

$aws --endpoint-url=http://localhost:4569 dynamodb list-tables

こんなレスポンスが返って来ればOK

{
    "TableNames": [
        "Music"
    ]
}

さきほど作成した Music テーブルの情報が返却されてきます。

3. DynamoDB に Item を挿入する

$aws dynamodb put-item \
 --endpoint-url=http://localhost:4569 \
 --table-name Music  \
 --item \
     '{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}}' \
 --return-consumed-capacity TOTAL

こんなレスポンスが返って来ればOK

{
    "ConsumedCapacity": {
        "CapacityUnits": 1,
        "TableName": "Music"
    }
}

4. DynamoDB の table を scan してみる

Item 挿入されたか確認する為に、scan してみましょう。

$aws --endpoint-url=http://localhost:4569 dynamodb scan --table-name=Music                                                                                               

挿入されてるみたいですね。

{
    "Count": 1,
    "Items": [
        {
            "AlbumTitle": {
                "S": "Somewhat Famous"
            },
            "SongTitle": {
                "S": "Call Me Today"
            },
            "Artist": {
                "S": "No One You Know"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}

5. スタックのリセット

Ctrl+C でプロセスを終了すると、スタックはクリアされます。 もういちど起動して、再度 dynamodb のテーブル一覧を取得してみましょう。

$aws dynamodb list-tables --endpoint-url=http://localhost:4569

さきほどの Music テーブルが消えてることがわかります。

{
    "TableNames": []
}

AWS IoT のデバイスはこうやるんだよ、という手順

旧UIに戻るらしいけど、取り敢えずいまのUIでのやり方を書いておく。なぜなら多分日本でAWS IoT使ってるひとすごい少なくて、まったくネットに情報ないので。それでは新しく使い始めるユーザーのハードルが高い。

板垣政樹 『ITエンジニアが覚えておきたい英語動詞30』

私は英語話者の外国人エンジニア(日本語わかる)達と普段から仕事をしている。一応、彼らとのコミュニケーションは日常会話と仕事の会話の両方で、英語を用いている。

 

最も英語に触れていた大学生活から長く時間が経ってしまい、ほとんど英単語や熟語を思い出せなくなってしまったから、かなり砕けた言い回しや文法の誤りも含んだ英語で話している。一応業務はまわっているので、意味は通っているようだ。つまり、この本にあるような内容を実践していた。まぁ相手が日本語わかるので、最悪日本語と英語両方で意味が伝えられるという甘えはあるけど。

 

動詞よりも、例文にある動詞以外の単語や言い回しが参考になった。ITソフトウェア開発の現場でのコミュニケーションを想定した英文というのはなかなかない。