この記事ははてなエンジニア Advent Calendar 2022の26日目のエントリです。 こんにちは id:cohalz です。はてなブログでは2022年7月にインフラをAmazon EC2からAWS ECS(AWS Fargate)に移行するプロジェクトが完了しました。 プロジェクトは2021年9月から始まったので約10ヶ月間という大きなプロジェクトでした。 プロジェクト完了までに行ってきたことのうち、特に面白かったところなどをこの記事で実施した順に振り返ってみます。 はてなブログのインフラのこれまで アプリケーションを動かせるようにする ALBを追加する 検証環境を用意だけしておく プロキシの設定埋め込み 証明書の配信 アクセスログを配送できるようにする アクセスログの形式を新しくする EC2でもFirehoseを経由するように タイムゾーンをUTCに統一 FirehoseのLa
追記: GoのアプリケーションをOpenMetricsを使ってObservableにする方法については別エントリを書きました。 → https://songmu.jp/riji/entry/2020-05-18-go-openmetrics.html ECSとGoで運用しているシステムに対するDatadogの日本語知見があまり無さそうだったので書いてみる。ちなみに以下の環境です。 ECS on EC2 (not Fargate) アプリケーションコンテナのネットワークモードはbridgeモード 動的ポートマッピングも利用 背景として3月にNature Remoのインフラアーキテクチャ改善をしていて、その前にもうちょっと監視を整えたほうが良いな、ということでDatadogを導入したのがある。テストがないとリファクタリングできないように、監視がないとアーキテクチャのアップデートもやりづらいとい
ECS on Fargate は AWS のアプリケーション実行環境として近年定番の選択肢です。 そんな ECS on Fargate について、Infrastructure as Code や CI/CD などを含めて環境を整えようとすると、何かしらのツールが必要になります。 2020 年時点の情報としては AWS Dev Day Japan の「第2回 AWS Fargate かんたんデプロイ選手権」という資料があり、ECS on Fargate のデプロイツールを比較するうえでとても参考になるのですが、AWS のアップデートはとても早いです。 2022 年 12 月の時点で ECS on Fargate のデプロイツールをいくつか試してみたので、得られた知見をまとめておきます。 調査したツール 今回 ECS on Fargate のデプロイツールを調査した理由は、実際に ECS on
こんにちは。CTOのid:motemenです。 このたび、これまでも継続的におこなっていたLet's Encryptへの寄付に加え、core-jsおよびecspresso(の作者であるfujiwaraさん)へ、はてなとして寄付を行いました。Let's Encrypt以外にも、はてなで利用しているOSSとして新たにこの2つに今回寄付した次第です。 ほかの多くの企業と同様、はてなのウェブサービスの大部分は、創業以来、多くのOSSによって支えられています。世のソフトウェア開発者がオープンにしてきた処理系やライブラリ、コミュニティのおかげで、初期のはてなから今にいたるまで、さまざまなプロダクトを開発し、事業として世の中に価値をもたらすことができています。 はてなではこれまでもコミュニティイベントのスポンサーや、(多くは個人の活動としてですが)OSSへのパッチ貢献やOSSの自作、イベントのスタッフ参
はじめに 必要に応じて検証環境の追加・削除などの管理をするのが面倒くさいので、PR作成時に検証環境を構築、PRマージ・クローズ時に検証環境を削除ができないか考えてみました。 今回の作成したGitHub Actions ワークフロー、Terraformなどはこちらのリポジトリにあります。 概要図 どのように実現したか 実現あたり、コンテナイメージのプッシュ、ECS サービスのデプロイはGitHub Actions、Terraformの実行はAWS CodeBuildで行うことにしました。 なぜTerraformの実行はCodeBuildを利用するようにしたかというと、CodeBuildはVPC内のリソース(今回の場合はAurora Serverless)にアクセスできるからです。 これによってアプリケーション、DBマイグレーション時に使用するMySQL ユーザーをTerraformで作成する
こんにちは。カミナシでソフトウェアエンジニアをしているaomanです。 私のエンジニアとしての経歴はカミナシが2社目で、前職も含めフロントエンドからバックエンドまで一通り開発はしていました。ですが、AWSなどインフラに関しては、アプリケーション開発時必要になったところを少し触ったりするくらいで、ガッツリと本格的に学んだことがありませんでした。 そんな私ですが、今回ECS Clusterの切り替え作業を先輩エンジニア監修の元一緒に行う機会をいただきました。どのようなことをしたのか、簡単にではありますがご紹介させて頂こうと思います! ざっくり概要 カミナシのサービスでは、APIサーバーの運用にAmazon ECS(on Fargate)を利用しています。また、APIサーバーコンテナの他にいくつかのコンテナが起動しています。以下がざっくりとした図になります。1つのTask定義があり、4つのコンテ
こんにちは、リードエンジニアの @dachi_023 です。今回はGitHub Actionsとecspressoでデプロイフローの構築をしたのでそれについて書いていきます。先に言っておくと簡単にセットアップできるし設定もシンプルなのでかなりおすすめです。 Actions | GitHub kayac/ecspresso: ecspresso is a deployment tool for Amazon ECS これまでのデプロイ コネヒトではECS環境へのデプロイに silinternational/ecs-deploy を採用しています。CodeBuildもしくはTravis CI上からecs-deployを利用してECS環境にアプリケーションをデプロイする構成です。 CI/CDツールの乗り換え検討 これまでずっとTravis CIを利用してきました。しかし 料金体系の変更 があった
ECSの運用で発生した悩み リポジトリ分割と採用ツール 採用したツール モノレポ管理 jsonnetの利用イメージ パイプラインの実装 差分検出 反映の高速化 crontabのJST表記対応 ecspresso verifyによるチェック OPAによるポリシーチェック さいごに こんにちは、インフラエンジニアの和田です。 弊社は、WEBアプリケーションおよびバッチ処理の実行基盤として Amazon Elastic Container Service(以下「ECS」と呼ぶ) を採用しています。現在では複数チームの開発者が 100 を超えるタスク定義を運用する規模にまで拡大しています。この記事では、増え続けるECS定義をモノレポとエスプレスタック(ecspresso/ecschedule)で管理した事例を紹介します。 ECSの運用で発生した悩み ECSを利用する開発者やアプリケーション数が増え
こんにちは、普段PR TIMES STORY(以下STORY)の開発リーダーをしている岩下(@iwashi623)です。 PR TIMES STORYは弊社のMissionである「行動者発の情報が、人の心を揺さぶる時代へ」をそのまま体現したようなプロダクトで、「創業ストーリー」や「開発秘話」などの行動者の熱量をそのまま配信して、企業とメディア、生活者のより良い・多くのリレーションが生まれることを目的としています。 PR TIMES STORYトップページ 本記事では、私も今月から2年目となったので新卒の時よりさらにチームに貢献していきたい!と思っていたところ、STORYの現状の環境では開発速度が出しづらい状況を抱えていたので、そちらを解消するためにチームで行ったことを書いていきます。 現状 STORYは一部PR TIMESとは別リポジトリ、別インフラで独立して管理されており、独立している部
MIXI でモンストサーバチームとセキュリティ室を兼務している、atponsです。 モンストサーバチームでは、モンスターストライクとは別に、モンスターストライク スタジアムというスマートフォンのアプリゲームのサーバ開発・運用を行っています。 モンスターストライク スタジアムは、モンスターストライクとプレイスタイルは同じながら、4vs4の最大8人まで同時対戦や練習モードなどを備えたアプリになっており、モンストのeスポーツ大会「モンストグランプリ」を開催する際にも利用されています。 開発体制の現状 モンスターストライク スタジアムは、初期の段階でモンスターストライクのコードから分岐する形で開発されているため、アップストリームの変更を順次取り込んでいくという仕組みで運用されています。そのため、サーバコードなどは別にあり、適宜新機能を取り込んでいきアップストリームと合わせていくという開発・運用フロ
Amazon ECS のデプロイツール、ecspresso の v1.5.0 をリリースしたのでお知らせです。 github.com 今回は Amazon ECS Exec という新機能対応が目玉です。ほかにもお送りいただいたPRを取りこんだ各種修正が入ったリリースになります。どうぞご利用ください。 PRをお送りいただいた皆様、ありがとうございました! 新機能 ECS Exec への対応を追加しました ホストから docker exec するように、Fargate に対しても起動しているコンテナに入ってコマンドを実行できる ECS Exec 機能がリリースされています。 aws.amazon.com ecspresso v1.5 では exec コマンドを追加して、AWS CLI なしで exec できるようにしました。session-manager-plugin は必要です。 exec
要約 GitHub Actions に Amazon ECS デプロイツール ecspresso と AWS Lambda デプロイツール lambroll を簡単にインストール action を用意しました。 steps で以下の指定をするだけです。(Linux 環境専用です) - uses: kayac/ecspresso@v0 - uses: fujiwara/lambroll@v0 もうちょっと詳しく これまで GitHub Actions の action は基本的に Node で書く必要があったのですが、やりたいことはバイナリをダウンロードして展開してコピーするだけなのになんで Node を書かないといけないのか……(Linux以外の環境を考えると仕方ないとはいえ)、と面倒くささが先に立って、これまで action を作らないままでした。 が、先日 Composite Run
結論 下記「背景」のようなケースの場合は、ecspressoまたは類似ツールを使ったほうが事故は少ない コンテナやAWSやっていき勢、PoCなど速度が必要なケースはAWS Copilotを使ってみて慣れていくのはアリ というより、双方のツールは目指すところが全然違うので比較対象として論じること自体にちょっと無理がある 前提 本稿で記載している「ECS」は「ECS on Fargate」であり、「ECS on EC2」ではありません。 双方のツールを軽く触れて書いた記事なので、細かい機能について把握していないものもあると思います。 背景 これまでいくつかのAWSを使用したプロジェクトのインフラ管理にTerraformをオールインワンツールとして採用してきました。 しかし、システムの規模が大きくなるにつれてTerraformではどうしても取り回しの鈍さが出てくるケースが増えてきたため、アプリケ
この記事はfreee 基盤チーム Advent Calendar 2023 の24日目の記事です。 はじめに はじめまして! kanno と申します。freee SREで、freeeサインのプロダクトSREを担当しておりAWSインフラの改善や運用を主に行っています。初回の投稿で拙い文章になりますが、直近で実施したfreeeサインのAWSリージョンを移行した話を書こうと思います。 背景 元々、freeeサイン(旧ninja-sign)はHeroku上にアプリケーションをデプロイしていましたが、2022年の年末頃にAWSに移行しています。その際、元々のHerokuがus上で稼働していたことが影響して、AWSのバージニアリージョンに移行された状態でした。私がfreeeのサインチームにjoinしたのがこの時で、AWSリージョン移行を担当することになりました。 AWSリージョン移行のモチベーション
自分が開発しているAmazon ECSデプロイツール ecspresso のmeet upを、JAWS-UGコンテナ支部のイベントとして開催していただきました。 参加された皆様、発表して頂いた8名の皆様、企画、運営してくださったJAWS-UGコンテナ支部の皆様、本当にありがとうございました! 皆様のecspresso愛を感じて、作者冥利に尽きるイベントでした。ecspresso共々、今後ともよろしくお願いします。 jawsug-container.connpass.com 経緯とか しかしこれだけ利用者がいるならecspresso meetupとかできるんじゃないか。話すネタがないけど(Dev Dayで話しちゃうので)— fujiwara (@fujiwara) 2023年5月25日 AWS Dev Day 2023 Tokyoの発表 でecspressoをご利用の皆様を紹介したくて名前を
こんにちは。サーバーサイドエンジニアの TOC です。 本日はコネヒト株式会社で取り組んでいる Super X という活動の一環である「デプロイフロー改善」の取り組みを紹介しようと思います。 本記事で紹介した改善以外にも、デプロイフロー改善チームで取り組んだことは別エントリでお届けする予定です✨ 目次 はじめに 抱えていたデプロイフローでの課題 各課題の解決方法 開発環境で検証した Docker イメージを本番環境のデプロイで利用する ロールバック方法の確立 その他工夫した点 デプロイジョブの並列化 並列化したジョブの結果を取得する workflow-conclusion-action の利用 まとめ PR 参考 はじめに そもそも Super X って何?と思われるかと思うので、取り組みのご紹介をしようと思います! Super X はエンジニア組織として追っている目標のプロジェクト名で、
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。 2023年4月20日〜21日に開催されているAWS Summit Tokyo 2023、皆さん参加してますか? 今回はそんな4年ぶりに開催されている最高のオフラインイベント、AWS Summit Tokyo 2023のセッションレポートを書いてみました。 さて皆さん、好きなゲームハードは何ですか?ゲームボーイ?ゲームボーイアドバンス?ゲームキューブ? セッション概要 ニンテンドーアカウント リノベーションプロジェクト ニンテンドーアカウントは 2015 年のリリース当初は Amazon EC2 を中心としたインフラ構成を採用していましたが、システム規模の拡大や時間の経過に伴い、徐々にシステムの継続性にリスクが生じるようになってきたため、リノベーション(システムの大規模な改修)を実施しました。 リノベーションで
この記事は Classi developers Advent Calendar 2021 5 日目の記事です。 adventar.org 昨日は Sab さん の iOS15からのキーボード回避[UIKit] でした。 Classi でサーバサイドエンジニアとして働きながら週末は野菜を育てているらいむです。我が家の畑は夏野菜が終わり、最近は秋・冬野菜を育てています。白菜が無事結球したのでホッとしています。 今回は野菜ではなくて、業務で使っている ecspresso をより安全に使うために行ったことを書きます。本記事は ecspresso を例に書きますが、ecspresso に限った話ではないので、CircleCI でバイナリの checksum を比較したり、バイナリをキャッシュしたいときに同じやり方が使えると思います。 はじめに 元々は CircleCI 上で都度 ecspresso
おかげさまで各所でご利用頂いている(模様の) Amazon ECS デプロイツール ecspresso ですが、リリースしてからもうすぐ3年になりますし、ここで一部非互換の修正を入れた v1 を出そうとしています。 非互換な点は少ないのでほとんどの方にはそのまま使って頂けると思いますが、下記を確認した上で v0.99.x を試して頂いて、もし何か問題があればフィードバックを頂けると幸いです。 (2020-10-30 追記) v1.0.0 をリリース済です。 github.com (2020-09-25 23:00 追記) Homebrew で 0.99.x がインストールできるようになりました。 tap ecspresso@0.99 by mashiike · Pull Request #9 · kayac/homebrew-tap · GitHub $ brew install kaya
本記事では、AWS環境でRedashを動かす場合に、ECSを使う例を紹介します。 できるだけ、手間をかけずにセットアップしたいため、Terraformとecspressoを使用します。 これらのツールを使われていない方でもRedashをECSで動かす参考になると思います。 公式によるRedashのセットアップ方法は以下です。 github.com 公式のセットアップ方法では、コンテナの環境にPostgreSQLなどのDBが含まれています。運用を考えると、DBはRDSを使いたいと考えます。 今回は、Redashで必要な各種DBはAWSのマネージドサービスを使い、プログラムはECSで動かすという例を紹介します。 ソースは以下にあります。 github.com 使用するツールについて Terraform ecspresso Terraformとecspressoの組み合わせはとても良くて、Ter
Amazon ECS デプロイツール ecspresso の作者による解説本です。 チュートリアル、基本的な使いかた、応用的な使いかた、設計思想と実装、全コマンドのリファレンスを掲載しています。 ecspresso advent calendar 2020 に掲載した内容を再編集、2021年以降にリリースされたv1.3以降の機能追加への記述を追加したものです。 https://adventar.org/calendars/5916 [2022-12-23] 本書は v1.x 対応版です。ecspresso v2 がリリースされました。v2対応版は https://zenn.dev/fujiwara/books/ecspresso-handbook-v2 をご利用ください。 [2021-05-15] v1.5.4 に対応して改訂を行いました。 - ECS Exec の章を追加しました - コ
Amazon ECS でタスクの構成定義に使う task definition をリポジトリで管理する場合、JSON 形式で取り扱うことが多いと思います。 ECS デプロイツールである ecspresso でも、task definition は環境変数等を展開できる記法があるものの、基本的には JSON ファイルとして扱っています。 これは AWS コンソールで作成した task definition を aws describe-task-definition や ecspresso init コマンドでファイルとして取り出して利用することを前提としているためで、これを YAML や別の形式で扱うことは考えていません。 ところで、実際に ECS でそれなりのサービスを運用すると、task definition JSON の管理で悩むことが増えてきました。 JSON は人間が編集するのに
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く