タグ

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

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

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

    踏み台EC2を廃止してSession Manager接続に置き換えました
    zsiarre
    zsiarre 2021/09/16
  • 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でファイルを効率よくアップロードする方法
    zsiarre
    zsiarre 2019/09/23
  • データ指向アプリケーションデザイン

    AmazonでMartin Kleppmann, 斉藤 太郎, 玉川 竜司のデータ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理。アマゾンならポイント還元が多数。Martin Kleppmann… 手軽に扱えるデータの量や種類が増える一方、CPUの性能はムーアの法則通りには成長しなくなり、大規模データ処理では、多数のマシンを活用する分散処理が欠かせなくなってきました。クラウドの普及とともに多数のマシンを自ら調達せずとも分散システムを構築できるようにもなっています。 しかし驚くべきことに、今までこの分野に入門するための定番の書籍がありませんでした。分散処理にデータ処理が加わる融合分野である上、オープンソースプロジェクトの進化も速く、専門家同士でも共通の理解を構築するのが非常に難しかった分野です。このを上手に使うと、既存のOSSプロジェクトの位置付けや、

    データ指向アプリケーションデザイン
    zsiarre
    zsiarre 2019/07/30
  • エンジニアが「明日からマネジメントして」と言われたら

    製品開発におけるマネジメントの全体感最初に結論エンジニアがマネジメント始める際には、↑のようにざっくり簡単にでいいので開発チームのマネジメントの全体像を掴んだうえで、自分がマネジメントするべき範囲を明確にして動くことをオススメしてみます。 以降、もう少し詳しく説明します。 なんで書こうと思ったかエンジニアにとってマネジメントとはなにか。突出した技術力を持った人というのがエンジニアでは花形なイメージが一般的にはあるでしょうし、マネジメントはエンジニア全員にとって必須科目ではありませんが、一定の経験、年齢、スキルになったら考えることだと思います。 しかし、エンジニアにとってマネジメントという言葉はとても曖昧。必須科目でない分、特定技術に関するものよりもずっとドキュメントや教材がすくなく、なにをやればいいかけっこうわかりにくい。 最近だとVP of Engineeringみたいなポジションがメジ

    エンジニアが「明日からマネジメントして」と言われたら
    zsiarre
    zsiarre 2019/04/19
  • モチベーションに頼らずに進捗する

    仕事でも運動でも趣味でも、どうしても進捗しないときがある。ヤル気が出ない。しかし、そう言ってると何も成し遂げることもなく人生は終わってしまう。モチベーションに頼らないで進捗する方法を身につけよう。 やるべきか、やらないでおくか悩むことがあるが、それが最も進捗を妨げている。その迷う時間が無駄だ。 やらないならやらないで決めて、他のことに時間を使った方が生産的だ。それに、もし仕事なら、やった方が良いかどうか、感情を持ち込む必要などない。 締切があったり、その日にやるべきだと決めていたのなら、迷う必要はない。やれば良いのだ。どうやったら効果的かなんて考えてるくらいなら、やろう。改善は、やりながら考えよう。 いつでも気軽にできる状態にしておくことだ。 始めるまでに沢山の手間や時間がかかることは、やはり億劫になる。始めようと思うなら、いつでも始められる状態なら、すぐに手にかかることができる。 もし文

    モチベーションに頼らずに進捗する
    zsiarre
    zsiarre 2018/04/13
  • Apache Kafkaを使ったアプリ設計で反省している件を正直ベースで話す

    Apache Kafka: Producer, Broker and Consumer2017年は生まれて始めてApache Kafkaを格的に業務利用(PoCではなく番運用)した年でした。Apache Kafka的なメッセージングミドルウェアそのもののは、社内的な事情でよく使っていたのでその使い勝手に対して困惑はほとんど無かったですし、ミドルウェアとして非常に安定しているため、Kafkaクラスタそのものでの不具合らしい不具合が発生したことは一度もありませんでした。 しかし、Kafkaのトピック設計などに関してのベストプラクティスは事例ベースでもあまり見かけたことがなく、チームメンバーと悩むことも多かったです。このストーリーでは、主にKafkaを利用したアプリ設計で考えたことや失敗したことを振り返りつつ共有します。なお、パーティション数や各種バッファサイズなどのチューニング要素は今回取

    Apache Kafkaを使ったアプリ設計で反省している件を正直ベースで話す
    zsiarre
    zsiarre 2018/01/05
  • コードレビューにおけるレビュアー側のアンチパターン

    tl;drコードレビューが上手く回って無くてチームが疲弊して辛かったよレビュアーの言い方を変えるだけで大体解決するよ立場とかで例外を許さず、みんながレビューしてレビューされると良いよはじめにあるプロジェクトGitHubのPRベースでのコードレビューを導入をしました。いかんせんチーム開発が初めてレベルの新人さんが多く、何かと苦労しました。特にレビュイーに対して不効率な指摘はそのまま指示の不明確さに繋がり、チーム全体の開発生産性を下げるので、レビュアーはレビュイー以上に気を使う必要があると感じました。下手をすると、レビュイーのメンタルが弱って闇堕ちするので、チームメンバーの最も大人な人がメンタルケアしたりします。大人な人は大体がリーダー格なので、その人の時間が奪われると何かと開発現場が疲弊しちゃいますね。コードレビューってそんなに難しいものだっけと思ったりもしますが、反省の意味も込めて実際に

    コードレビューにおけるレビュアー側のアンチパターン
    zsiarre
    zsiarre 2018/01/05
  • Redis Cluster の運用とモニタリング/監視のコツ

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

    Redis Cluster の運用とモニタリング/監視のコツ
    zsiarre
    zsiarre 2017/12/22
  • 非デザイナーがナメられないための、おすすめデザインツール12選

    僕は非デザイナーですが、こちらの考えにとっても共感します。 ブログにしても、アプリにしても、イベントにしても、良いコンテンツは世の中にもういっぱい溢れていて。 気度を示し、他ではなく私たちのコンテンツを選んでもらうために、デザインにこだわるって大事だなって考えています。 おしゃれなものを作らなければいけない、と言うわけではないと思います。 使ってもらいたい・届けたい人たちに寄り添い、作りたい世界観を伝えるためのデザインにすること。 相手視点を持った思考が大事なんじゃないかなって思います。 『わかる!だけど実際難しいんだよ!』 という非デザイナーの方々に向けて、同じく非デザイナーの僕がお気に入り登録して愛用しているツールをシェアします。 有名どころも多いですが、もしご存知ないものもあったら触ってみてください。

    非デザイナーがナメられないための、おすすめデザインツール12選
    zsiarre
    zsiarre 2017/10/28
  • iPhone X の Safari における Web コンテンツの表示 - ONO TAKEHIKO - Medium

    iPhone X が発表されて間もなく、ディスプレイの「切り欠き」については至るところでちょっとしたイジリ合戦が始まっています。中には実際に信じてしまっている人もいるほど秀逸なものがありまして、それがこちら。 思わずクスッときてしまいますが(笑)、まあ当然こんなことにはなりません。 iPhone X にはディスプレイの上下左右に iOS の占有領域が存在し、それ以外(アプリのタッチイベントを認める領域)を Safe Area と呼ぶようです。Safe Area の外にある上部領域にはステータスバーとして時計やアンテナのインジケータなど iOS のシステムアイコン等が並び、下部の領域には iPhone X で導入された「ホームバー」が存在することになります。 では iPhone X の Safari で Web サイトを表示した場合に一体どのようになるのか?それを Web 上の情報を元にまと

    iPhone X の Safari における Web コンテンツの表示 - ONO TAKEHIKO - Medium
    zsiarre
    zsiarre 2017/09/18
  • 知らないうちにどんどん人が増えていく会社 – Isoparametric – Medium

    知らないうちにどんどん人が増えていく会社gumiに入って一ヶ月か二ヶ月が過ぎたころ、チームに所属して様子を見てみると、gumiには一ヶ月の間にかなりの多くの人(5人とか10人とか)が入ってくるのに気がつかされた。 幾つかのチームが組成され、それぞれがゲームを開発、運用しており、解析班などと呼ばれるようなチームもあった。 (そして、それは機能していなかった。売れてないのだから、解析する内容などあるはずもない) そして、入ってきたプログラマは時折適当にプロジェクトにアサインされたりした。 私のチームにも新しいプログラマがやってきたわけだが、そのことを切っ掛けに、うやらプログラムがまともに組めない(仕事を任せられない)人が入ってきていることに気がつかされることになる。 困ったので当時のCTOにどういう基準で人を採っているのか訊いてみた。 特に基準はない、みんな頑張ればできる、とのことだったので、

    zsiarre
    zsiarre 2017/09/18
  • テックリードという役割

    なぜこの文章を書くか?自身が数ヶ月テックリードの役割で経験した内容を基に、テックリードがどういう役割で、毎日の仕事の中でどのような仕事をするのかについて書いていく。 テックリードはサンフランシスコのWeb系企業では一般的なようだが、日ではまだそれほど広まっているとはいいづらいと思う。 テックリードに求められるのは一言で言えば”技術エンジニアチームをリードすること”である。Webエンジニアのキャリアパスでたびたび二元論的に語られる、”技術で生きていく”職人的なトラックとも”人やプロジェクトのマネジメントをする”マネジメント系のトラックともニュアンスが異なる。 自身の技術力、そしてリーダーシップをもってエンジニアチームのアウトプットを最大化させていくのがテックリードの役割である。 多くの人にその役割を知ってもらい、エンジニアとしてのキャリア形成の助けになればと思っている。 なお、このポ

    テックリードという役割
    zsiarre
    zsiarre 2017/07/16
  • エンジニア向けの社内情報共有ツールの紹介

    FiNCのエンジニアの人数も50人を超え、チームを横断した情報共有の機運が高まっています。 もともと社内には情報共有ツールとしてConfluenceやGitHub Wikiなどがありましたが、前者はMarkdownなどのエンジニアがドキュメントを書きやすい機能が不足しており、後者は情報の検索性に難がありました。 エンジニアのコミュニケーションを活性化させるため、カジュアルに記事を投稿できて誰でも見ることができる、新しい情報共有ツールを導入をすることにしました。 今回は候補として検討した際に、以下の要件を満たしていた情報共有ツールを紹介します。 Markdownを使ってプレーンテキストで記述できる記事の更新履歴のdiffを見ることができるフィードで記事の一覧を見ることができるわかりやすい検索機能コメント欄でのやりとりができるWebhook(チャットツール連携)UML記法やスライドの埋め込みの

    エンジニア向けの社内情報共有ツールの紹介
    zsiarre
    zsiarre 2017/07/01
  • ソリューションアーキテクトに学ぶFiNC AWS勉強会

    はじめにこんにちは、FiNCでSREを担当しているSatoshi Nakamuraです。 FiNCには半年前の2017年1月にジョインしました。 ジョインしてからほぼ ECS と Jenkins と戯れております。 今日はAWSの方にご協力いただき社内で開催した勉強会についてご紹介します。(SAの @akitsukada さん。当にありがとうございました!!) 開催するに至った経緯FiNCのインフラ環境はAWSをメインに使用しているのですが、ご存知の通りAWSのサービスはインフラ以外もたくさんあります。 EC2、ECS、RDSなどは当然使用していますが、開発ツールやアプリケーションサービスなどは未だ使用していないものの、使用したら何か課題解決が出来るのではないかという期待と新しいものに触れたいという気持ちからAWSの方に相談して開催することになりました。 勉強会の内容を検討初のAWS勉強

    ソリューションアーキテクトに学ぶFiNC AWS勉強会
    zsiarre
    zsiarre 2017/06/29
  • SREのここ1年の取り組みと、今後1年でやりたい事

    SRE視点で見るマイクロサービス FiNC SRE担当の鈴木です。 今回は、以前社内のマイクロサービス勉強会で話した「SREの視点からみたマイクロサービスの運用」に関して紹介していきたいと思います。 いつもは、マイクロサービス万歳みたい… 上記ブログでは2016年1月時点で16個のサービスから構成されていると書かれていますが、2017年5月時点で30個近くまで増えています。増える理由はいくつかありますが大別すれば新機能開発か、既存機能の切り分けという事になります。そんな中でここ1年で取り組んで来た事を紹介していきたいと思います。 Docker/ECSの導入大きな変化の一つは格的にDocker番環境で導入し始めた事です。DockerのマネージメントツールとしてAWSのECSを利用しています。Dockerを利用する事の利点は今更ここで紹介するまでもないですが、新規サービスの立ち上げや既存

    zsiarre
    zsiarre 2017/06/26
  • How To Work Better For Beginners-よりよい仕事の進め方

    (これは2年ほど前にFiNC社内エンジニア向けに書いた仕事の進め方に関するドキュメントです。アップデートも兼ねて公開してみることにしました。) エンジニアとして仕事をする上でおそらく重要だろうと個人的に思うことを。新人エンジニア向け。 目次手を動かす前にスピード&クオリティを同時にあげるために差がつく3つのコミュニケーション力PDCAを回す人/回らない人/回さない人1. 手を動かす前に仕事としてのエンジニアリングは、コードを書くところからはじまるのは稀で、きっちりやっておくべきことがある。 1–1. ゴールの確認当たり前だが、ゴールを確認すること。間違った方向に実装を進めることは時間の無駄と心得る。 仕様を詳細に確認すること目的ユースケース必要な機能の要件具体的なアウトプットイメージ重要なのは、表面的な実装内容の裏にある、目的やユースケースの確認をすること。 コードを書くことはあくまで目的

    zsiarre
    zsiarre 2017/06/20
  • kazeburo/choconと、それを支えるnet/httpの実装について

    【資料公開します】AWS Dev Day Tokyo 2017 にて登壇しました/choconの簡単なご紹介 - Mercari Engineering Blog こんにちは。SREの @ kazeburo です。2017年5月31日から6月2日にAWS Summit Tokyo 2017と同時に開催された「AWS Dev Day Tokyo 2017」に登壇しました。 登壇する機会をいただき、ま… 先日、というか昨日、この資料が流れてきまして、Private Networkの外部との通信を効率良く行うためのミドルウェア、choconというproxyサーバーが紹介されていました。SSL, HTTP/2を加味した上での超シンプルで高速なforward proxyサーバー実装という印象です。 使い方やAPIの叩き方は上記のリンクを参考にしていただくとして、やたらマイクロな実装でなぜこうも高速に

    kazeburo/choconと、それを支えるnet/httpの実装について
    zsiarre
    zsiarre 2017/06/08
  • Capistrano Version 3

    Deploying — the smell of coffee, the satisfaction of shipping, the excitement of lovingly crafted code going out into the world. It’s hard not to love releasing code, but when it comes to actually writing deployment scripts, it’s one part of programming that most people don’t write home about. In the Ruby world, Capistrano has been the de-facto standard for deploying applications since it’s releas

    Capistrano Version 3
  • 1