タグ

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

  • Waypointとは何か

    Hashicorpの2020年冬の新作 Waypoint (リリースブログ)に関してドキュメントなどをざっと眺めてみたので最初の印象をちょっと書いてみる.ちゃんとしたレビューは @copyconstruct の記事 Waypoint とか読むのが良い.毎度のことながらドキュメントやガイドはかなりちゃんとしたのがあるので使い方とかはそっちを読んだ方がいい.以下に書くのはざっくりした個人の感想(ちなみにもう一つのBoundaryに関してはZero Touch Productionとは何か に軽く書いた). What is Waypoint Waypointは,KubernetesやNomad,Amazon ECS,Google Cloud RunといったPlatformの上にBuild,DeployとReleaseの一貫したWorkflowを実現するツール.使ってる言語やそのパッケージ方法や,

    toritori0318
    toritori0318 2020/10/20
    Otto懐かしい。こちらは今後どうなるか
  • Infrastructure as Dataとは何か

    最近GCPから登場したKubernetes YAMLのPackage managerであるKptは「Infrastructure as Data(Configuration as Data)」という考えかたを基礎としてそれを推し進めようとしている.それ以外にもKubernetesのEcosystemには(明示はされていなくても)この考え方が中心にある.Infrastructure as Codeとは何が違うのかなど歴史を振り返りつつまとめてみる. (指針はBorg, Omega, and Kubernetesという論文にあるが「Infrastrcuture as Data(Configuration as Data)」という言葉を明確に定義した文章はない.この記事はReferencesに挙げるいくつかのPodcastにおける@kelseyhightowerの発言や,それに反応する@bgra

    toritori0318
    toritori0318 2020/05/12
    "Client側にあるのは,あるべき状態が記述されたData(e.g., YAML)だけだ"
  • なぜMicroservicesか?

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

  • SREとしてMercariに入社した | SOTA

    1月16日よりMercariにてSRE/BSE(Backend System Engineer)として働いてる. これまではとある会社で社内向けのPaaSエンジニアとして働いてきた(ref. PaaSエンジニアになった).PaaSの目標である「アプリケーション開発者の効率を最大化」を突き詰めながら少人数のチームでいかにScalableなプラットフォームを構築するかに注力してきた.Cloud FoundryやDockerといったインフラの最前線とも言える技術やアーキテクチャに触れ,かつその中で自分の技術的な柱である自動化に取り組むことができたのは非常に刺激的で自分に大きなプラスになった. その一方でPaaSというプラットフォームはその性質上サービスそのものからは中立的になることが避けられない(だからこそScalabilityを実現できるのだが).よりサービスに近い部分,サービスの成長に直結す

    toritori0318
    toritori0318 2017/02/13
    🎉
  • Writing An Interpreter In Goを読んだ

    Thorsten Ballによる“Writing An Interpreter In Go”を読んだ. 技術界隈のブログを見ているとたまにSteve Yeggeの「If you don’t know how compilers work, then you don’t know how computers work」という言葉に出会う.その度に学生のときにコンパイラの授業を受けなかったこと後悔し,社会人になって挑戦しようとして挫折したことを思い出して悲しい気持ちになる.@rui314さんのCコンパイラをスクラッチから開発してみたを読んではかっこいいなと思いつつ僕には無理だなあと心が折れていた. どの言語を書いていてもコンパイラ(もしくはInterpreter)は切っても離せないものであり内部の動きがどうなっているかを知っておきたいという欲求はプログラマーなら誰しもあると思う(少なくとも僕に

  • Systems Performanceを読んだ

    Brendan Greggによる“Systems Performance: Enterprise and the Cloud”を読んだ. Linux(Solaris)のパフォーマンスの分野でBrendan Greggという名前を聞いたことがあるひとは多いと思う.名前を知らなくてもが書いているブログやカンファレンスでの発表資料を見かけたことはあると思う.また彼が開発したFlame Graphにお世話になってるひともいるのではないか(ref. GolangでFlame Graphを描く).とにかくパフォーマンスに関して常に先端にいるひとである. そんな彼がSystems(ここでいうSystemsとはCPUやメモリといったハードウェアとKernelやOSといったソフトウェアを指す)のパフォーマンスについて内部のアーキテクチャーを含め徹底的に解説したのが書である.面白いに決まってる. 書の根底

  • Known unknowns

    “Systems Performance: Enterprise and the Cloud” をずっと読んでいる.このNetflixのBrendan Gregg氏がJoyent時代に書いたである.その名の通りLinux(とSolaris)のシステムのパフォーマンスのである(とにかく一つ一つが丁寧かつ深く解説されておりページをめくるごとに学びしかないのでパフォーマンスに関わるひとは今すぐ読むと良い). こので一貫して現れてくる,通底するのが,known-knowns,known-unknownsそしてunknown-unknownsという概念である.元ネタはDonald Rumsfeld 氏の会見でのコメントだが(cf. There are known knowns),複雑なシステムのパフォーマンスの重要な原則を集約している.良い概念なので簡単に紹介する. それぞれをパフォーマン

  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

    toritori0318
    toritori0318 2016/05/09
    1.6でこんなに改善されてるんだ
  • Apache Kafkaに入門した

    Apache kafka 最近仕事でApache Kafkaの導入を進めている.Kafkaとは何か? どこで使われているのか? どのような理由で作られたのか? どのように動作するのか(特にメッセージの読み出しについて)? を簡単にまとめておく(メッセージングはまだまだ勉強中なのでおかしなところがあればツッコミをいただければ幸いです). バージョンは 0.8.2 を対象に書いている. Apache Kafkaとは? 2011年にLinkedInから公開されたオープンソースの分散メッセージングシステムである.Kafkaはウェブサービスなどから発せられる大容量のデータ(e.g., ログやイベント)を高スループット/低レイテンシに収集/配信することを目的に開発されている.公式のトップページに掲載されているセールスポイントは以下の4つ. Fast とにかく大量のメッセージを扱うことができる Scal

  • Go言語でファジング

    この記事はGo Advent Calendar 2015の21日目の記事です. 今年もGoコミュニティーから多くのツールが登場した.その中でも異彩を放っていたのがGoogleのDynamic testing toolsチームの@dvyukov氏によるgo-fuzzである. go-fuzzはGo関数のファジングを行うツールである.このツールはとても強力で標準パッケージで100以上,golang.org/x/パッケージで40以上,その他を含めると300以上のバグを発見するという実績を残している(cf. Trophies). 記事ではこのgo-fuzzの紹介を行う. ファジングとは? Fuzz testing - Wikipedia, the free encyclopedia ソフトウェアの脆弱性検出におけるファジングの活用 「ファジング」とはソフトウェアのテスト手法である.テスト対象となる

  • 自宅で美味いコーヒーを淹れる

    この記事はコーヒー Advent Calendar 2015の17日目の記事です. コーヒーを淹れること,豆を買いに行くこと,コーヒー器具を集めること,コーヒー関連のを読むことが好きだ.コーヒー趣味といっても過言でなない.自宅で美味しいコーヒーを淹れるために今までいろいろ試行錯誤してきたが,最近ある程度固まってきたのでその環境についてまとめてみる. 過去 最初に自分とコーヒーとの馴れ初めをつらつらと. 親がコーヒー好きなので実家では当たり前のように毎日コーヒーが淹れられていた.そのため家で自分でコーヒーを淹れて飲むのは当たり前のものとして育った.実家ではドリップマシンが使われていた.特にこだわりはなく出されるものをそのまま飲んでいたと思う. 自分でコーヒーを淹れるようになったのは大学生で一人暮らしを始めてから.最初は実家にあった使われていないドリッパー(確かHARIO)と近所のスーパー

  • Go言語でLet's EncryptのACMEを理解する

    Let’s Encrypt TL;DR Let’s EncryptのベースのプロトコルであるACMEを理解する. まずACMEをベースとしたCAであるboulderをローカルで動かす.次にACMEのGo言語クライアントライブラリであるericchiang/letsencrypt(非公式)を使い実際にboulderと喋りながら証明書発行を行い,コードとともにACMEが具体的にどのようなものなのかを追う. はじめに 証明書というのは面倒なもの,少なくともカジュアルなものではない,というイメージが強い.それは有料であることや自動化しにくいなどといったことに起因している(と思う).そのようなイメージに反して近年登場する最新の技術/プロトコルはTLSを前提にしているものが少なくない(e.g., HTTP2). このような背景の中で登場したのがLet’s Encryptと呼ばれるCAである.Let’s

  • Go言語とHTTP2

    http2 in Go 1.6; dotGo 2015 - Google スライド 2015年の5月にRFCが出たばかりのHTTP2が2016年の2月にリリース予定のGo1.6で早くも利用可能になることになっている.HTTP2の勉強も兼ねてGo言語におけるHTTP2実装を追ってみる. 以下ではまず実際にHTTP2サーバを動かしChromeで接続してみる.次に現状コードがどのように管理されているかを追う.最後に実際にコードを動かしながらHTTP2の各種機能を追う.なお参照するコードはすべて以下のバージョンを利用している(まだWIPなのでコードなどは今後変わる可能性があるので注意). HTTP2とは? HTTP/2に関してはスライドやブログ記事,Podcastなど非常に豊富な情報がインターネット上に存在する.そもそもHTTP2とは何か?なぜ必要なのか?などを理解したい場合は参考に挙げた記事など

  • Hashicorp Ottoを読む

    Hashicorpから2015年秋の新作が2つ登場した. Otto - HashiCorp Nomad - HashiCorp Ottoがなかなか面白そうなのでコードを追いつつ,Ottoとは何か? なぜ必要になったのか? どのように動作するのか? を簡単にまとめてみる. バージョンは 0.1.0 を対象にしている(イニシャルインプレッションである) Ottoとは何か? 公式はVagrantの後継と表現されている.が,それはローカル開発環境の構築も担っているという意味で後継であり,自分なりの言葉で表現してみると「OttoはHashicorpの各ツールを抽象化し開発環境の構築からインフラの整備,デプロイまでを一手に担うツール」である.ちなみにOttoという名前の由来はAutomationと語感が似ているからかつ元々そういう名前のbotがいたからとのこと. なぜOttoか? なぜVagrantで

    toritori0318
    toritori0318 2015/10/08
    awesome氏
  • Go言語のDependency/Vendoringの問題と今後.gbあるいはGo1.5

    Go言語のDependency/Vendoringは長く批判の的になってきた(cf. “0x74696d | go get considered harmful”, HN).Go1.5からは実験的にVendoringの機能が入り,サードパーティからはDave Chaney氏を中心としてgbというプロジェクベースのビルドツールが登場している.なぜこれらのリリースやツールが登場したのか?それらはどのように問題を解決しようとしているのか?をつらつらと書いてみる. Dependencyの問題 最初にGo言語におけるDependecy(依存解決)の問題についてまとめる.Go言語のDependencyで問題なのはビルドの再現性が保証できないこと.この原因はimport文にある. Go言語で外部パッケージを利用したいときはimport文を使ってソースコード内にそれを記述する.このimport文は2通りの

    toritori0318
    toritori0318 2015/06/26
    awesome!
  • 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の内容をまとめておく.各種テーマが散ってい

    toritori0318
    toritori0318 2015/04/15
    よいまとめ
  • AppcとCoreOS/Rocket

    Dockerの諸問題とRocket登場の経緯 Rocketはリリースした直後にちょっと触ってそのまま放置していた.App containerの一連のツールとRocketが現状どんな感じかをざっと触ってみる.まだまだ全然使えると思えないが今後差分だけ追えるようにしておく. なお,今回試した一連のツールをすぐに試せるVagrantfileをつくったので触ってみたいひとはどうぞ. https://github.com/tcnksm/vagrant-appc 概要 App Container SpecやRocketが登場の経緯は前回書いたのでここでは省略し,これらは一体何なのかを簡単に書いておく. まず,App Container(appc)Specはコンテナで動くアプリケーションの"仕様"である.なぜ仕様が必要かというと,コンテナという概念は今まで存在したが曖昧なものだったため.namespac

  • Dockerの諸問題とRocket登場の経緯

    2014年の後半あたりからDockerDocker Inc.への批判を多く見かけるようになった(もちろんもともと懸念や嫌悪を表明するひとはいた).それを象徴する出来事としてCoreOSチームによる新しいコンテナのRuntimeであるRocketのリリースと,オープンなアプリケーションコンテナの仕様の策定を目指したApp Containerプロジェクトの開始があった. CoreOS is building a container runtime, Rocket 批判は,セキュリティであったり,ドキュメントされていない謎の仕様やバグだったり,コミュニティの運営だったり,と多方面にわたる.これらは具体的にどういうことなのか?なぜRocketが必要なのか?は具体的に整理されていないと思う.これらは,今後コンテナ技術を使っていく上で,オーケストレーションとかと同じくらい重要な部分だと思うので,ここ

    toritori0318
    toritori0318 2015/02/17
    awesome!
  • 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 - <

  • CoreOSクラスタにDockerコンテナをデプロイする | SOTA

    CoreOSクラスタにDockerコンテナをデプロイする Docker Meetup Tokyo #4 CoreOSの概要とDockerを実際に運用しようと思ったときにDockerが抱える問題をCoreOSがどのようにそれを解決するかについて発表した.デモではTerraformを使ってDigitalOcean上にCoreOSクラスタを立てて,デモアプリケーションコンテナを動的にスケールさせる様子を実演した(ソースは全てtcnksm/docker-meetup-4-demoにある). 雑感 簡単にMeetupの感想を書いておく. 今回はDockerそのものの発表よりも,オーケストレーションやサービスディスカバリーなどの周辺ツールやサービスの発表が多かった.ツール(もしくはDocker専用のOS)では,CoreOS,Kubernetes,RedHad Atomic host,サービスではAma