The Qiita Advent Calendar 2017 is supported by the following companies, organizations, and services.
![AWS Fargateのカレンダー | Advent Calendar 2017 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/efb5be677fdcf55dc31dac41f257f8309ecf6ac3/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent_calendar%252Fogp%252Fcalendar-ogp-background-c24e7570f8dc39b6f4e1323cbd83d11f.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark-x%3D142%26mark-y%3D128%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzRkZGRkZGJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dD1BV1MlMjBGYXJnYXRlJTIwQWR2ZW50JTIwQ2FsZW5kYXIlMjAyMDE3Jnc9OTE2JnM9NmMzZjE4NDQyMWQ1NjBhZWE2YTU5NDczNGNlMzYzYTc%26blend-mode%3Dnormal%26blend-x%3D142%26blend-y%3D491%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzRkZGRkZGJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dD0lNDByaXl3byZ3PTkxNiZzPWFiNzUwMzFkNTQzNGYwMmM1YmUyN2Y1OWZmZmMwYTM0%26s%3D37bea9b9a4574e1ac0c904da6efe41f1)
The Qiita Advent Calendar 2017 is supported by the following companies, organizations, and services.
セッションIDやアクセストークン、はたまた業務上で使う一意の識別子など、いろんなところで一意のIDを生成しなきゃいけないケースが存在します。 そこで世間で使われているIDの生成方法について調べてみました。 選択基準 ID生成における要求として、以下の観点が上げられるかと思います。 生成の速度 大量にデータを短期間で処理し、それらにIDを付与する場合、ID生成そのものがボトルネックとなることがあります。 推測困難性 IDを機密情報と結びつける場合、IDを改ざんされても、機密データが見れないようにできている必要があります。 順序性 採番した順にデータをソートする必要がある場合は、IDがソートキーとして使えないといけません。 それぞれについて各生成手段を評価します。 ID生成の手段 データベースの採番テーブル 採番用のテーブルを作り、そこで番号をUPDATEしながら取得していくやりかたです。古い
テストがなかった無法地帯のプロジェクトに自動テストを導入して、開発速度を1.7倍にした話をします。 自動テストがなぜないのか 自動テストのないプロジェクトには、そうなる理由が必ず存在します。よくみる理由は、「時間がないから1」「テストの書き方がわからないから」「無理やりテストを書いたつらい経験があったから2」といったものです。今回のプロジェクトの場合は、以下の2点でした: 自動テストの書き方がわからないから レビューがテスト代わりだったから まず、チーム編成が変わって私ともう一人がチームに加わるまで、実装者の中に自動テストの経験者はいませんでした。このような状況では、自動テストは困難になります。なぜなら、何をどうやってどこまでテストするかを決めるには、多少の慣れが必要だからです。この慣れがないと、何をしたらいいかわからないという状態に陥りがちで、結果として自動テストが後回しにされてしまいま
みなさまへのお願いごと 間違いなどの指摘は、編集リクエストでお願いします。 コメントの記載はページが長いこともあり、お控えください。 TOEIC900でも英語が話せない日本人へ ITエンジニアの私がなぜ令和の今、中国語を学ぶのか? 名詞/イディオム gotcha はまりポイント。注意すべきこと。引っ掛け。 Got you のくだけた表現。捕まえた、誰かをトラップに引っ掛ける、という意味から。 注) 一般的には、Got itやYup、I seeのような、同意の返事でよく使われる。 類) caveat, pitfall There are many gotchas in this application. sought-after (スキル、人材、機能、アプリが) 人気の、需要がある、求められてる、引っ張りだこ Python is a sought-after language. c-suit
はじめに 最近PyPIデビューを果たしました。 そこで同じ用にPyPIデビューを考えている人の為に登録手順を書きます。 PyPIってなに? おいしいの? Python Package Indexの略らしいです。 Pythonパッケージを管理するためのサービスで、誰でもパッケージを登録できます。 ここに登録されたパッケージは pip installでインストール出来る様になります。 ちなみにパイピーアイって読むらしいです。 パッケージの準備 まずは登録するパッケージを準備します。 今回は例として「pypipkg」というパッケージを作成した事にします。 ファイル構成はこんな感じです。 pypipkgディレクトリ直下にsetup.py等、PyPIの登録に必要な情報を用意し、pypipkgのソースのディレクトリも置きます。 pypipkg $ tree ├── MANIFEST.in ├── RE
AWSの新しいロードバランサであるNLB(Network Load Balancer)を使ってfluentdのforwardパケットを分散してみたので、レポートをまとめておく。 NLB自体については、クラスメソッドのブログ等で紹介されているのでそちらを参照するのが分かり易い。 静的なIPを持つロードバランサーNetwork Load Balancer(NLB)が発表されました! 試してわかった NLB の細かいお作法 ざっくり言うと、TCPプロトコルを対象にしたALBって感じ。 ターゲットグループはポートレベルで設定できるので、コンテナ環境と相性が良い。 ポート違いで複数fluentdが立っていても同じグループとしてまとめて分散できる。 利用までの流れ ターゲットグループを作成し、TCPレベルでコネクションが貼れるかのヘルスチェックの設定をする インスタンスもしくは対象IPと、ポートの組を
はじめに 本記事では、データサイエンティストを目指して勉強した半年間で学んだこと、気付いたことをまとめます。これからデータサイエンティストを目指して勉強する人の参考になればと思います。 最初の一手 個人的にではありますが、最初はアプローチの理解から始めると思いますが、数式とプログラミングの両方を勉強する方が良いと思います。数式→プログラミング or プログラミング→数式の順序はどちらでも良いと思いますが、プログラミング(フレームワーク)のみはやめた方が良いと思います。出力結果の解釈で苦労することになるので、理論、数式はしっかり理解した方が良いです。 プログラミング、フレームワークの力で、機械学習ができるのは事実ですが、作ったモデルや予測結果の説明ができなければ価値がありません。 そして、モデルは作るだけでなく、評価・改善していく必要があります。その際に、グリッドサーチのようにモデルのパラメ
おしながき メンバーは3〜5名、協力企業は1〜2名の小規模チーム メインは某小売店の大規模ECサイト案件統括(開発は外部委託) サブで基幹連携等を担う周辺業務システム開発・運用 マネジメントが上手く回らず高残業が常態化。PM前任者異動に伴い、部下だった私にお鉢が回る 上長指示により残業削減へ そんな2〜3年前のお話です。 改善"前"のタスク運用 ※あくまで改善"前"の話です。 基本はRedmine + Kanbanプラグインでタスク(チケット)運用。 ナレッジ可視化の意識付けも目的の一つだったので、以下を徹底した。 作業に伴うタスク発行の徹底 進捗状況の逐次反映 そして、運用ルールの入念な教育(五十六メソッドを採用した) 当時はITSベースのタスク管理自体が社内で先進的な試みだったので、当時部下だった私もPMと協力して「できるだけ丁寧な運用」を心がけた。心がけた、のだが… おかしいな だれ
自分で小さいツールを作る時に心に留めているtipsです. 書き始めたときは「どうせ書捨てだし」と思って書き始めると意外と長い間,もしくはいろんなところで使うことになったりするので,気をつけておくと後から楽になるというような小技です.大規模なソフトウェアの開発ではまた違った流儀があると思います. メインルーチンを関数にする 関数名はなんでもいいのですが,自分は趣味で main() という名前の関数を用意し,メインルーチンは全てそこに書くようにしています. #!/usr/bin/env python def main(): print('hello, hello, hello!') if __name__ == '__main__': main() pythonの小さなサンプルコードを見たりすると関数外の部分にベタで実行コードが書かれていたりします.もちろんそれでも動くのですが,以下の2点で後
関連記事 マイクロサービスを支えるインフラアーキテクチャ (AWS Dev Day 2019登壇資料) ECSデプロイツールを公開しました ECSにおけるログの取り扱いを別ページに移動させました 設計 基本方針 基盤を設計する上で次のキーワードを意識した。 Immutable infrastructure 一度構築したサーバは設定の変更を行わない Infrastructure as Code インフラの構成をコードで管理 (Terraformを採用) Serverless architecture 無駄にサーバを増やさない アプリケーションレイヤに関して言えば、Twelve Factor Appが参考になる。コンテナ技術とも親和性が高い。 ECSとBeanstalk Multi-container Dockerの違い 以前に記事を書いたので、詳しくは下記参照。 Dockerコンテナデプロイ
どうも僕です。タイトルどおりです。 Dockerコンテナのメトリクス監視してますか??? 本番環境ならDataDogとかそのへんで監視していてもローカル環境のやつ確認してないこと多くないですか? ※ 僕はしてないです。dd-agentローカルにも入れれば終わりじゃんって話なんですが、なんかあれじゃないですか。。。 監視してなかったお陰で、高負荷時に突然死する原因を調査したい場合に、無事頭を抱えました。(原因はメモリ枯渇してた) そこで、コンテナ名, コンテナID, CPU, MEM, NET RX/TX, IO R/W, PIDS 情報が見れたらいいのになーを調べてたらさくっと見れることに気づいたので記事にまとめておきます。 やりたかったのはこういうやつです。 本家の付随機能を利用する コンテナのリソース使用状況をライブで流し続ける 使い方
Deploymentはローリングアップデートやロールバックといったデプロイ管理の仕組みを提供するものです。 下記の図のようにDeploymentはReplicaSetを生成・管理し、ReplicaSetはPodを生成・管理します。 ReplicaSet(ReplicationControllerの後継)はPodTemplateと呼ばれるPodのテンプレートをもとに、Podを指定された数(レプリカ数)に調整・管理を行う仕組みです。Podがレプリカ数より足りない場合はPodを追加し、多い場合はをPodを削除します。この仕組みによってノードの障害やアプリケーションのクラッシュでPodが足りなくなった際も自動的にPodが追加され、セルフヒーリングが実現されています。 Deploymentはコンテナイメージのバージョンアップなどアップデートがあった場合、新しい仕様のReplicaSetを作成し、新旧
デベロッパーコンソールでテストが出来たり、https://echosim.io/でブラウザ上でSkillを実行できたりと、Skillの開発環境が色々と揃ってきました。 そこで、実際に作ったSkillが公開されるまでの流れをまとめてみました。 Skillの登録 以前に書いたAmazon Alexa Skills Kitを調べてみるのように、Amazon.comのアカウントが必要です。そのアカウントを利用して、developer portalにログインして登録します。 メニューのAlexaを選ぶとAlexa Skills KitとAlexa Voice Serviceが選べるので、Alexa Skills Kitを選びます。 すると自分が作成したSkillの一覧画面に移動します。 右上のAdd a New Skillをクリックします。 基本情報の登録 今回は、通常のSkillを作成するのでCu
RFC 6749 (The OAuth 2.0 Authorization Framework) で定義されている 4 つの認可フロー、および、リフレッシュトークンを用いてアクセストークンの再発行を受けるフローの図解及び動画です。動画は YouTube へのリンクとなっています。 English version: Diagrams And Movies Of All The OAuth 2.0 Flows 追記 (2019-07-02) 認可決定エンドポイントからクライアントに認可コードやアクセストークンを渡す方法については、別記事『OAuth 2.0 の認可レスポンスとリダイレクトに関する説明』で解説していますので、ご参照ください。 追記(2020-03-20) この記事の内容を含む、筆者本人による『OAuth & OIDC 入門編』解説動画を公開しました! 1. 認可コードフロー RF
リーダーだけコマンドを実行したい あまりConsulの要件っぽくはないんですが、任意の場所から特定のノード(今回はリーダー)でのみコマンドを発火させたかったのでそれを実現するためのメモです。 リーダーのノード名を知りたい 特定のノードで特定のコマンドを実行するには consul exec の nodeオプションを指定するのが良さそうです。 しかしおそらく リーダーのノード名を一発で取得できない ようなので、以下のフローで取得する必要があります。 1. リーダーのIP取得 status APIで取得。1
はじめに 現在お手伝いしているアカウンティング・サース・ジャパンにて、ECSを使ったDockerの本番運用を始めたので、その一連の流れについてまとめました。 税理士向け会計システムを扱うアカウンティング・サース・ジャパンでは最近Scalaでの新規プロジェクトが立ち上がってきており、既存のプロジェクトはJavaであったり、Erlangであったりと様々な言語が用いられていますが、インフラ人員が少ないということもあり、なるべくシンプルなインフラ構成を実現する必要がありました。 そういった中、各アプリケーションをDocker化することでインフラとしては共通基盤としてのDockerクラスタのみの管理になり、運用コストが下がるのではないかという仮説からDocker化を進めることになりました。クラスタを実現するに辺りKubenatesなどの選択肢もありましたが、今回はECSを選択し、下記のようにAWSの
はじめに Goで書いたコードデバッグするのにdelveというデバッガ使ってみたら、なかなかに便利だったので基本的な使い方をまとめておく。 delveのコードは以下のGitHubリポジトリで公開されてるんだけど、 https://github.com/derekparker/delve 使い方の説明が公式ドキュメントにあんまり書いてないので、実際に触ってみて、具体例を挙げて説明していこうかと思う。 インストール 手元の環境はMacなのでbrewで入れた。 ※他の環境の場合は以下の公式ドキュメントを参照して下さい。 https://github.com/derekparker/delve/tree/master/Documentation/installation
この記事の要点 コマンド一撃でtmuxのウィンドウを大量に分割してコマンドの同時実行を助けるxpanes(イクスペインズ)というコマンドを作りました。一斉に複数のホストにpingを送ったり、sshでログインして同時操作したり、一斉に複数のファイルをtail -fしたりするのに使えます。 操作ログの保存機能、標準入力を受け取ってコマンドを作成する機能などなど、機能も充実していて便利です。tmuxを知らない方でも単純な例だけであれば覚えることは少ないので、ぜひお試しを。 下記のアニメを見ていただければ、どんな感じのものを作成したのかお分かりいただけると思います。 Github: https://github.com/greymd/tmux-xpanes 背景 tmuxを使っている方は、どのような用途でtmuxを役立てることが多いでしょうか?開発の効率を上げるため1、あるいは複数のウィンドウ2や
rawが表示されない なんか最近ファイルをrawで表示すると何も出てこないなーということに気づき、不便だったので調査/対応したメモ。 gitlabのissueにもいくつか上がっているんだけど、Nginxを独自で設定している時に起こりやすいらしい。 リンクを参考にし、いくつかの設定を試してみたんだけど、最終的には こちらの設定を試したところうまくいった。 全リクエストをgitlab-workhorseにする 全然知らなかったんだけど、現在はGitLabのエンドポイントに直接アクセスせずに全てのリクエストをworkhorse経由にする ものらしい。 これでうまく動くの?と疑ったんだけど、結果的に問題なく動作しているのでこのまましばらく動かしてみる。
$request_id Nginx 1.11.0 以降に限りますが、リクエスト毎に発番されるIDの変数として $request_id が追加されたようです。 http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_id この変数を利用することにより、Nginxコアだけでサービス間のトレースを簡単に行うことが可能になります。 シンプルな例 以下のように、$request_idをログに含めるだけでリクエスト毎のIDを記録できます。 http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く