タグ

ブックマーク / deeeet.com (8)

  • なぜMicroservicesか?

    現職においてMonolithアーキテクチャからMicroservicesアーキテクチャへの移行とその基盤の構築に関わって2年近くが経った.未だ道半ばであるがこれまでの経験や日々のインプットをもとにいろいろ書いておこうという気持ちになった.記事ではそもそもMicroservicesアーキテクチャとは何かを整理し,なぜやるべきか?・なぜ避けるべきかを整理する. Microservices? Microservicesアーキテクチャとは「Single purpose,High cohesion,そしてLoosly Couploedなサービスを組み合わせてシステムを構築する」アーキテクチャ手法である.それぞれの原則をまとめると以下のようになる. Single purpose: 一つのことに集中しておりそれをうまくやること Loose coupling: サービスは依存するサービスについて最小限の

    hatz48
    hatz48 2019/05/21
  • DockerイメージのビルドにPackerを使うべき理由

    DockerイメージのビルドにPackerを使うべき理由 “Ask HN: Do you bake AMIs for AWS deployments?”での,Mitchell Hashimoto氏のコメントより.簡単に抄訳. ソフトウェアのインストールや設定の知識は,依然としてShellscriptやChef,Puppetに残っている.Packerを使えば,Dockerのコンテナの作成に現時点で存在している経験やCIプロセスなどを利用できる. 共通のフォーマットの設定.Dockerfileの記述は特有である.それは良いが,現状様々なイメージ(AMIやDockerのコンテナ,Virtualboxなど)が存在する.Dockerが全てではないとき,イメージをビルドするために様々なツールをメンテするのは負担になる.Packerを使えば,一つの方法で,さまざまなプラットフォームに対応できる.たとえ企

  • CoreOS Meetup Tokyo #1 を開催した

    CoreOS Meetup Tokyo #1 を開催した CoreOS Meetup Tokyo #1 - connpass 今回のMeetupは,etcd2.0のリリースやrktの登場,5月のCoreOS Fest 2015,また各社のCoreOSの導入事例の兆しを受けての開催.といってもCoreOSの利用事例はまだ少ないと感じたため,CoreOSだけではなくその関連技術やプラットフォームをテーマとした.それでも20分の発表8というとても濃いMeetupとなり非常に勉強になった.またそこまで人は集まらないと思っていたところ100人枠に350人の応募があり,注目の高さにも驚いた(次回は抽選にするなど考慮します). 発表資料は全て,CoreOS Meetup Tokyo #1 - 資料一覧 - connpassにまとめてある.が,簡単にMeetupの内容をまとめておく.各種テーマが散ってい

  • Go言語でプラグイン機構をつくる

    dullgiulio/pingo Go言語でのプラグイン機構の提供方法は実装者の好みによると思う(cf. fluentd の go 実装におけるプラグイン構想).Go言語はクロスコンパイルも含めビルドは楽なのでプラグインを含めて再ビルドでも良いと思う.が,使う人がみなGo言語の環境を準備しているとも限らないし,使い始めてもらう障壁はなるべく下げたい.プラグインのバイナリだけを持ってこればすぐに使えるという機構は魅力的だと思う. Go言語によるプラグイン機構はHashicorpの一連のプロダクトやCloudFoundryのCLIなどが既に提供していてかっこいい.net/rpcを使っているのは見ていてこれを自分で1から実装するのは面倒だなと思っていた. dullgiulio/pingoを使うと実装の面倒な部分を受け持ってくれて気軽にプラグイン機構を作れる. 使い方 サンプルに従ってプラグインを

  • Dockerコンテナ接続パターン (2014年冬)

    記事はDocker Advent Calendar 2014の1日目の記事です. Dockerによるコンテナ化はリソース隔離として素晴らしい技術である.しかし,通常は1つのコンテナに全ての機能を詰め込むようなことはしない.マイクロサービス的にコンテナごとに役割を分け,それらを接続し,協調させ,全体として1つのサービスを作り上げるのが通常の使い方になっている. コンテナ同士の接続と言っても,シングルホスト内ではどうするのか,マルチホストになったときにどうするのかなど様々なパターンが考えられる.Dockerが注目された2014年だけでも,とても多くの手法や考え方が登場している. 僕の観測範囲で全てを追いきれているかは分からないが,現状見られるDockerコンテナの接続パターンを実例と共にまとめておく. なお今回利用するコードは全て以下のレポジトリをcloneして自分で試せるようになっている.

  • Docker 1.5の変更点

    Docker 1.5の変更点 Docker 1.5.0-rc1 Docker 1.5: IPv6 support, read-only containers, stats, “named Dockerfiles” and more | Docker Blog Docker 1.5が出た.IPv6のサポートやstatsコマンドによるコンテナのメトリクス表示などが追加された.ユーザ的に一番嬉しいのはDockerfileの名前を自由に決められるようになったことだろうと思う. 今までDockerfileはDockefileという名前しか受け付けなかった,というかまともに動かなかった.やりようはあって,標準入力からぶっ込むことはできた.例えばbaseとう名前のDockerfileを作って以下のようにbuildを実行することができた. $ docker build -t tcnksm/test - <

  • 複数プロジェクトを抱えるチームでのデプロイ自動化

    複数プロジェクトを抱えるチームでのデプロイ自動化 1つのチームで,10以上のプロジェクト,コードベースを抱える場合にどのようにデプロイの自動化を進めたか,工夫したこと,考慮したことなどをまとめておく. デプロイツールには,Python製のfabricを採用しているが,他のツールでも同様のことはできそう.なお,fabricの基的な使い方などは既にインターネット上に良い記事がたくさんあるので書かない(最後の参考の項を見てください). fabricの選択 シェルスクリプトとCapistranoを考慮した. まず,シェルスクリプトは人によって書き方が違うため,統一が難しくメンテナンスコストも高い.また共通化も難しい. 次に,Capistranoは,裏でやってくれることが多く,学習コストも高い.プロジェクトによってはかなり特殊な環境へのデプロイも抱えているため,Capistranoの前提から外れる

  • golang勉強会でGo製ツールの配布方法について話してきた

    golang勉強会でGo製ツールの配布方法について話してきた “Ship your CLI tool built by golang to your user #golangstudy” “Golang勉強会”で発表してきた.Go言語で作成したツールをクロスコンパイルして,複数プラットフォームに配布する方法について話してきた.自分がGoをはじめた理由の一つがクロスコンパイルによる配布のしやすさであり,いろいろ実践したりそれ用のツールを作ったりしてきたのでそれをまとめた. 以下の視点で話したつもり, 自動化により開発者の負担を減らす ユーザがツールを使うまでの負担を減らす “わかりやすいREADME.mdを書く”にも似たようなことを書いたけど,自分のような無名なエンジニアの作ったツールであってもユーザに使ってもらうには,2点目のような視点を大切にしないといけないと思う. 発表は以下の記事をも

  • 1