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

  • Go1.7のcontextパッケージ

    Go1.7ではgolang.org/x/net/contextがcontextパッケージとして標準パッケージに仲間入りする.そしていくつかの標準パッケージではcontextパッケージを使ったメソッド/関数も新たに登場する.contextパッケージは今後さらに重要な,Gopherは普通に扱うべき,パッケージになると考えられる.記事ではそもそもcontextパッケージとは何か?なぜ登場したのか?なぜ重要なのか?どのように使うべきか?についてまとめる. contextパッケージが初めて紹介されたのは2014年のThe Go Blogの記事 “Go Concurrency Patterns: Context”である.この記事ではなぜGoogleがcontextパッケージを開発したのか,どのように使うのか具体的な検索タスクを例に解説されている.まだ読んだことがない人はそちらを先に読むと良い. co

    civitaspo
    civitaspo 2021/06/23
  • 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を実現するツール.使ってる言語やそのパッケージ方法や,

    civitaspo
    civitaspo 2020/10/16
  • Zero Touch Productionとは何か

    GoogleのSREとSecurityによるBuilding Secure Reliable Systems というの中で「Zero Touch Production (ZTP) 」という考え方が紹介されていた.これはインフラの権限管理やインフラの構築そのものの指針となる概念であり,自分がそうあるべきだとずっと思ってきた考え方でもある.これはどのような考え方なのか?をこれまでの歴史を踏まえて具体的なツールや事例とともにまとめておく. Zero Touch Production Building Secure Reliable Systems においてZero Touch Production (ZTP) は以下のように定義されている. The SRE organization at Google is working to build upon the concept of least

    civitaspo
    civitaspo 2020/10/15
  • 社内PlatformチームのProduct Management

    現職においてPlatform チーム(社内基盤チーム)として働き始めて2年近くがたった.このチームにおいて自分はTech Leadをメインに努めてきたが,同時にPlatformの「どのような機能を」「どのような優先度で」作るか? を決めるProduct Manager的な役割も果たしてきた(ちなみにTech Leadに関してはメルカリのテックリードが学んだ、HowよりWhyを重視することが大切なわけ で少し話した).これは何度も失敗しながら悪戦苦闘しつつやってきたが自分たちなりのフレームワークをつくり実際に回すことができている. 未だに試行錯誤しているのでここで書いていることが正解だとは思っていないが,今後同じようにPlatformチーム的なことを始めるひとに向けて現状自分たちがどのようにやっているのかについて簡単にまとめておく(他の会社がどのようにやってるのかも聞きたいのでもし同じような

    civitaspo
    civitaspo 2020/10/07
  • Competing With Unicornsを読んだ

    Competing with Unicorns: How the World’s Best Companies Ship Software and Work Differently The Agile Samuraiの作者でありSpotifyにおいてAgile CoachとEngineerを努めたJonathan Rasmussonによる書はUnicornもしくはTech companyがどのようにチームをつくり,組織をスケールさせ,文化を作っているのかについて書いている.タイトルにUnicornとあり複数の企業を扱ってるように見えるが,基的には作者のSpotifyにおける体験が基になっておりSpotifyの話が中心になっている. なぜMicroservicesか?ではMicroservicesの最終ゴールは組織にあると書いた.これは共通の見解(のはず)である一方で,Microse

    civitaspo
    civitaspo 2020/06/09
  • 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

    civitaspo
    civitaspo 2020/05/11
  • なぜMicroservicesか?

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

    civitaspo
    civitaspo 2019/05/21
  • Service meshとは何か

    Microservicesの世界においてService meshは大きなキーワードになった.KubeCon 2017やKubeCon 2018 EUにおいても多くのセッションをService mesh(もしくはその代表格であるIstio)が占めており注目の高さも伺える.もちろんMicroservicesを進めるMercariにおいても導入を検討しており今後重要なコンポーネントの1つになると考えている.記事ではそもそもなぜService meshという考え方が登場したのか,なぜ重要なのか? その実装としてのIstioとは何で何ができるのか? について簡単にまとめてみる. 参考文献 Service meshを一番理想的な形でサービスに使い始めその考え方を広めたのはLyftだ(と思う).LyftはIstioのコアのコンポーネントであるEnvoyを開発しそれを用いてService meshを構築

    civitaspo
    civitaspo 2018/05/23
  • Dockerの諸問題とRocket登場の経緯

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

    civitaspo
    civitaspo 2018/04/29
  • Golangの新しいGCアルゴリズム Transaction Oriented Collector(TOC)

    http://golang.org/s/gctoc Goの新しいGCのProposalが出た.まだProposal段階であり具体的な実装はないが簡単にどのようなものであるかをまとめておく. GoのGCはGo1.5において単純なStop The World(STW)からConcurrent Mark & Sweepへと変更され大きな改善があった(詳しくは“GolangのGCを追う”に書いた).先の記事に書いたようにGo1.5におけるGCの改善は主にレイテンシ(最大停止時間)に重きが置かれいた.数値目標として10msが掲げられGo1.6においては大きなヒープサイズ(500GB)においてそれを達成していた. GCの評価項目はレイテンシのみではない.スループットやヒープの使用効率(断片化の対処)なども重要である.Go1.6までのGCではそれらについて大きく言及されていなかった(と思う).例えばスル

    civitaspo
    civitaspo 2016/06/29
  • 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

    civitaspo
    civitaspo 2016/05/10
  • Apache Kafkaに入門した

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

    civitaspo
    civitaspo 2016/02/01
  • 1