タグ

ブックマーク / medium.com (26)

  • 踏み台EC2を廃止してSession Manager接続に置き換えました

    こんにちは、エウレカ SRE チームの原田です。 今年 (2021年) エウレカでは、公開鍵認証で接続するEC2の踏み台サーバを廃止し、代わりに各サーバへの接続をIAMで認証できるSSM Session Managerへのリプレースを行いました。記事ではそのモチベーションや、実装のポイントを紹介していきたいと思います。 旧来の踏み台サーバ 旧来の踏み台サーバエウレカで長く運用されていた踏み台サーバ (Gateway) は以下のようなものでした。 各開発者は、自分の秘密鍵を使って踏み台サーバへSSHを行う ( 踏み台サーバ上には各開発者の個別ユーザーおよび公開鍵が登録されている )踏み台上では、接続が許可されているSSH対象のサーバの秘密鍵がユーザー毎に配置されており、その鍵で各サーバにSSHするMySQL / Elasticsearch / Redis など、Private Subnet

    踏み台EC2を廃止してSession Manager接続に置き換えました
  • ソケットAPIが遅すぎる?新たなio_uringを試す!

    新しいAPIが作られるたびに、私たちは、古いAPIを置き換えるだけで高速化という夢をみます。何度夢破れても、高速なAPIが追加されたと聞けば、試さずにはいられませんよね! 今回は、Linuxカーネル5.1で追加されたio_uringを使って、Rustのasyncランタイムを実装し、gRPCサーバのベンチマークを実行してみました。 io_uringとはio_uringは、ファイルシステムとネットワークの非同期I/Oのために開発されました。同期よりも非同期のほうがおしゃれ、そういう雰囲気ありますよね!クラウドネイティブも、非同期にAPIを介して、なんかやってるやつですよね。 io_uringのインターフェイスは、高い性能を目指し、1)アプリケーションとカーネル間でのメモリコピーを避ける、2)複数のI/O要求を一度にカーネルに伝えることができる、という工夫がされています。 下図のように、アプリケ

    ソケットAPIが遅すぎる?新たなio_uringを試す!
  • アーキテクチャレビューはじめました

    FiNCの篠塚(@shinofumijp)です。4月からCTOを拝任しました。 記事では1月から行ってきた「アーキテクチャレビュー」という取り組みについて紹介します。 FiNCではマイクロサービスを6年前から採用しており、順調にサービスも成長したおかげで、現在では稼働しているマイクロサービス数は50を超えるほどになりました。 マイクロサービスの採用により、限られた範囲での開発においては速度を落とさずスケールすることが可能という恩恵を得られましたが、一方でサービス数の増加は安定性、メンテナンス性をはじめとした様々な問題も生みました。その1つにアーキテクチャ全容の理解が困難になるという問題があります。例えば「ユーザが事を投稿した際に事アドバイスのプッシュ通知を送る」という機能1つをとっても、アドバイス管理サービスが事投稿のイベントを検知するためにイベントを購読し、同サービスがアカウント

    アーキテクチャレビューはじめました
  • コミットメッセージの書き方

    コミットメッセージにはどのような情報を残すべきだろうか?はじめにこの記事ではGitのコミットメッセージの重要性と良いコミットメッセージの書き方を説明します。いままで良いコミットメッセージについて考えてこなかったかたも一度立ち止まって考えてみてくれると嬉しいです。 対象読者GitGitHubを業務で使っている人「良いコミットメッセージ」をあまり意識しない人目次Gitを使ったソフトウェア開発で、なぜコミットメッセージが重要なのか?コミットメッセージの書き方の1例を紹介まとめGitを使ったソフトウェア開発で、なぜコミットメッセージが重要なのか?ソフトウェア開発において、良いコードとはどんなコードでしょうか? 私は「 他人が読みやすく、理解しやすいコード」だと考えています。ソフトウェアにバグは必ず出ます。そのバグを修正する時間を最短にできるような、読みやすい、理解しやすいコードが良いコードだと思

    コミットメッセージの書き方
  • Windowsでの開発は WSL + FluentTerminal が決定版

    2020/07/22 追記: ありがたいことにこの記事へのアクセスが今でも多数あります。現在はFluent TerminalよりWindows Terminalがおすすめですし、私も毎日そっちを使っています。 使う際はぜひ useAcrylic: true の設定をお忘れなきよう! (背景がすりガラスみたいになるやつです) 5ヶ月ほど前に、YogaBook (Windows)を買いまして。メインの開発環境をMacChrome OS → MacWindowsと移行することになりました。それに際してWindowsでの開発環境を整えて、やっと落ち着きそうなので紹介することにしました。 我ながら結構気に入ってます。というより、やっっと不自由なく開発できるようになりました。 tl;drWSLオンにしてUbuntuをMicrosoft Storeから入れる 参考:

    Windowsでの開発は WSL + FluentTerminal が決定版
  • Docker 19.03新機能 (root権限不要化、GPU対応強化、CLIプラグイン…)

    NTTの須田です。2019年7月23日に公開された、Docker 19.03の新機能をお伝えします。2018年11月8日にリリースされたDocker 18.09以来、8ヶ月ぶりのリリースです。 root権限不要化従来のDockerは、ホストのroot権限でデーモン(dockerd)を動作させる必要があったため、脆弱性や設定ミスを突かれると、ホストのroot権限を奪われる恐れがありました。 Docker 19.03では、非rootユーザでデーモンを実行できるようになりました(Rootlessモード)。 Rootlessモードを有効化することで、万一Dockerに脆弱性や設定ミスがあっても、攻撃者にホストのroot権限を奪取されることを防ぐことが出来ます。ただし、現時点ではcgroupを利用できないなどの制約があります。 RootlessモードのDockerは, curl -fsSL http

    Docker 19.03新機能 (root権限不要化、GPU対応強化、CLIプラグイン…)
  • コンテナ技術を捨て、 WASIを試す

    こんにちは、NTTの藤田です。 Dockerfileを書くのに疲れた?イメージサイズの縮小で1日が終わった?コンテナの起動が遅すぎる?コンテナ技術と悪戦苦闘する皆様のための新技術、アーキテクチャに依存しないポータブルなバイナリフォーマットと数十μsで起動するsandbox環境を実現する、WebAssembly System Interface(WASI)を試してみました。 WebAssembly System InterfaceとはWASIは、 WebAssemblyWASM)をウェブブラウザ以外の環境で実行するため、 ホストのファイルやネットワークなどの資源に安全にアクセスさせるための仕様です。 具体的には、POSIXに似たAPIが定義されており、WASMのバイナリが、OSが管理する資源にアクセスできるようになります。 WASMは、ネイティブコードなみの速度で動作する、ポータブルなバイ

    コンテナ技術を捨て、 WASIを試す
  • RootlessモードでDockerをより安全にする [DockerCon発表レポート]

    NTTの須田です.Moby (≒Docker),BuildKit,containerdなど,コンテナ関連のオープンソースソフトウェアのメンテナ (開発委員.コミッタとも.)を務めています.また,Docker Meetup Tokyoの企画・運営も行っています. 2019年4月29日~5月2日にかけて, Docker公式のカンファレンスである DockerCon が サンフランシスコにて開催されました. Dockerをより安全に使うための技術「Rootlessモード」に関して発表してきましたので,紹介します. RootlessモードとはRootlessモードは,Dockerデーモン及びコンテナを,非rootユーザで実行する技術です.Rootlessモードを用いることにより,万一Dockerに脆弱性や設定ミスがあっても,攻撃者にホストのroot権限を奪取されることを防ぐことが出来ます. 須田は

    RootlessモードでDockerをより安全にする [DockerCon発表レポート]
  • Go言語のio.Pipeでファイルを効率よくアップロードする方法

    パイプ(土管)をGo言語でも楽しめるはじめに前回はGo言語のmime/multipartパッケージによるファイルのアップロードを見ましたが、パフォーマンスの特徴にはあまり触れませんでした。 大規模なETLジョブや、制限の厳しいサーバーレスの環境などでは、ファイルを扱うプログラムのリソースを慎重に考える必要があります。記事ではメモリ使用量を大幅に減らすio.Pipeの使い方を見ていきます。 全てのコードはサンプルレポジトリにあります。 同期処理にある問題前回のコードをもう一度見てパフォーマンスを考えてみましょう。 // ファイルを開く file, _ := os.Open(filename) // リクエストボディのデータを受け取るio.Writerを生成する。 body := &bytes.Buffer{} // データのmultipartエンコーディングを管理するmultipart.W

    Go言語のio.Pipeでファイルを効率よくアップロードする方法
  • Kubernetesでステートフルなゲームサーバを動かした思い出

    とあるスマートフォン向けMMORPGプロジェクトで、アプリケーションサーバをほぼすべてGKE(Google Kubernetes Engine)に乗っけて動かしていました。 このゲームは、モバイル向けながら、複数プレイヤ間でそこそこリアルタイム性の高い同時プレイができるものでした。同じフィールドを誰かが歩けば、自分が見ている画面でもほぼ同時にそいつが歩いて横切っていく、同じ敵と皆で一緒に戦えば、誰かが繰り出した攻撃が参加者全員の画面に即同期される、もちろんチャットもできる、そんな具合です。今ではさほど珍しくないのかもしれませんが、PCのオンラインゲームのような機能を搭載した、リアルタイム性の高いモバイルゲームでした。 さて、こうなってくると、オーソドックスなWebサーバのような、HTTP/1でリクエスト/リプライを捌く、というサーバだけでは要件を満たすことができません。 複数プレイヤ間で

    Kubernetesでステートフルなゲームサーバを動かした思い出
  • Web 技術をキャリアの中心にしない

    うろ覚えの記憶だが、2013 年に Twitter でこの話題が拡散されていたと思う。Web 業界では誰もが知っていながら誰もが認識しているわけではなかった簡潔な表現に、当時の私は衝撃ではなく、うまいこと言うなと感心していた。 しかし、当時はまだまだ Web 技術は発展途上でありながら先進的なイメージがあったように思う。ソフトウェア開発の未来が Web 技術であることは多くの人は認識していたが、Web はさして大きくないリソース上の制約を設けつつ、さして多様性のないプロトコル上の制約を受けつつ、特定技術に絞れば2年ぐらいやればその分野の詳しい人になれるという、Web 業界以外のソフトウェアエンジニアからみたとき、スキルとしてどこかチャラいイメージがあった。 知人の Linux Kernel 開発者とゲームの話をしていたとき、経験や知識の積み重ねで勝てないゲームは嫌いだという話になって、その

    Web 技術をキャリアの中心にしない
  • Experimenting with Rootless Docker

    Cross-posted on Docker Engineering blog Docker engine provides lots of great functionality that is often tightly integrated to the features of the Linux kernel. For example, a component of container isolation is based on Linux namespaces. To create namespaces in Linux you need privileged capabilities. Same is true for mounting filesystems that is the basis of Docker’s storage model. Therefore hist

    Experimenting with Rootless Docker
  • Redis Cluster の運用とモニタリング/監視のコツ

    この記事は、はてなエンジニア Advent Calendar 2017の 20 日目の記事です。19 日目の記事は yasuhiro_onishi さんのScratchを使った子どもへのプログラミング教育 — 大西ブログでした。 今年の 2 月にはてなに入社して、あと 1 ヶ月と少しで 1 年を迎えようとしています。はてなに入社してから Mackerel のインフラと時系列データベースの AWS 移行プロジェクトを任されたり、移行を終えた後も後片付けや移行後の運用を担当したりと、主に Mackerel にコミットしていた 1 年でした。自分が Mackerel にコミットしたところは Mackerel のイベントで登壇したいくつかの登壇資料にもあるとおり数多いのですが、この記事では、運用する中で試行錯誤を重ねて苦労した Mackerel を支える時系列データベースのコンポーネントとして利用

    Redis Cluster の運用とモニタリング/監視のコツ
    reannkara
    reannkara 2019/02/08
  • 「良いエンジニア」を言語化してみました

    「VOYAGE GROUP エンジニアの公開ガチ評価会」に参加して、最近考えていた「良いエンジニア」像がかなり良い感じだと思うようになりました。 「ガチ評価会」自体の内容は他の方のブログに譲るとして、「ガチ評価会」で聞けなかった部分、つまり「普段だったら『ビジネス的側面からの技術投資判断』とかも聞くんだけど」と言っていたところが、まさに聞きたいところだったのでニヤッとしました。聞けなくて残念♪ 妥協ない挑戦元々ピクシブの技術力評価においては、「最近やった妥協ない挑戦は何ですか?」というのをキーワードにやってました。 解決すべき課題に対して、どういう背景があって、どういう事前調査をして、どういう実装をして、どう考察するか、というところまでをきちんと考えて仕事することに成長があるんだよ、というメッセージ性です。 そんなこと言っても普段は妥協ばっかりですって?いえいえ、相反する選択肢の中で、何を

    「良いエンジニア」を言語化してみました
  • Pythonで学ぶ強化学習 -入門から実践まで-を書きました

    約1年半ほどかかりましたが、「Pythonで学ぶ強化学習 入門から実践まで」を書き上げました。記事ではAsian Kung-Fu Generationさんがアルバム発売の度に行っている全曲解説にのっとり、各章の見所や苦労した点を紹介したいと思います。

    Pythonで学ぶ強化学習 -入門から実践まで-を書きました
  • 心理的安全性が高くアジャイルな組織設計

    心理的安全性の高いチームを作るためにサーバントマネージャーに徹する話などを聞くことがありますが、なんか大変そうだなーと考えてたら、これは組織設計の課題だと思ったわけです。 サーバントマネージャーは過渡期と割り切って、来の仕事である課題解決に時間を使えるようにしていったほうがいいです。 心理的安全性とは他者の反応に怯えたり羞恥心を感じることなく、自然体の自分を曝け出すことのできる環境や雰囲気のことを指します。 だそうです。失敗するかも…と早めに言えることはアジャイルな組織には必須です。 心理的安全性は1人のメンバーが日常的にコミュニケーションする相手との視座、視野、視点が近いと高くなると仮説を立ててみました。 視座、視野、視点の図 https://tech.drecom.co.jp/viewpoint-of-being-leader/視座が離れてる例:リーダーが超ベテランでメンバーが超若い

    心理的安全性が高くアジャイルな組織設計
  • 「技術を極める仕事にシフトしたい」というメンバーへのフィードバック

    「自分は○○技術に強みがあって、それを活かせる仕事をしていきたい」というメンバーがいました。自社ではまだ○○技術はあまり採用されていなかったのですが、筋は良いと思っていて、このメンバーにも期待していましたので次のようなフィードバックをしました。 フィードバック内容技術を極めて仕事にするというのは、実は「自分の好きな特定の技術にめっちゃ特化したらそれが仕事になる」というものではないのです。 技術がビジネスに繋がるまでには、 コア技術アプリケーション運用パッケージングブランディングセールスマーケティングなどなど、様々な要素が組み合わさってできています。 むしろ、ビジネスのほうから逆算してこそコア技術に価値があります。 特定の技術分野に対して、応用事例や運用まで考えてある程度広く浅く日頃からインプットをしておいて、ビジネス的価値が見えたときに「ここぞ」とばかりに自分から提案してコア技術を学べる力

  • 12 Factor CLI Apps – Jeff Dickey – Medium

    CLIs are a fantastic way to build products. Unlike web applications, they take a small fraction of the time to build and are much more powerful. With the web, you can do whatever the developer programmed. With CLIs, you can easily mash-up multiple tools together yourself to perform advanced tasks. They require more technical expertise to use, but still work well for admin tasks, power-user tasks,

    12 Factor CLI Apps – Jeff Dickey – Medium
  • FGO を支える負荷試験ツール

    これはアカツキとディライトワークスが共同で主催している “FGOなど大規模ゲームの課題から学ぶゲームサーバ・インフラ勉強会” での LT 発表資料です。こちらの資料に軽く補足を入れながら話をしていきます。 時雨堂では FGO の検証に利用するための負荷試験ツールを提供しています。 先日、大きめのメンテナンスが無事終わり、ほっとしています。 さて、メンテが無事終わって、FGO の中の人から以下のようなありがたいメッセージをもらいました。 負荷試験ツールなくしては今回の改修はなしえなかったと思いますので当にありがとうございました…。その負荷試験ツールがどんな仕組みで、どんなことを実現しているのかを書いていきます。時雨堂が負荷試験ツールで実現したことのみを書きます。 主に技術的な話というよりはこんなことやったよがほとんどです。 番データを利用した負荷試験利用されている負荷試験ツールは、時雨堂

  • How I write Go HTTP services after seven years

    UPDATE: You can watch a video of me giving this talk at Gophercon 2019:

    reannkara
    reannkara 2018/05/10