docker の検索結果:

Rubyインタプリタの品質向上のために個人的にやっていること

…ろ試行錯誤しながら Docker コンテナで設定をいくつかいじれば大丈夫であると突き止めました。今は 1つのマシン上で 22 の Docker コンテナがそれぞれ同時にテストスイートを実行するようにしています(build-ruby/run_sp2.rb at master ・ ko1/build-ruby )。メモリは 32GB で何とか足りています(ただし、後述する RAM ディスクはあきらめました)。 Dockerコンテナでいろんなテストを同時実行している様子(メモリ消費…

Amazon ECS と AWS Lambda で汎用 self-hosted runner を提供する基盤

…ar コンテナ内で dockerd を rootless で起動して利用 workflow 内の Docker コンテナの実行をセキュアに保つ 以上が汎用的な self-hosted runner を提供するための基盤である ghe-actions の概要です。ここからは ghe-actions の提供にあたって検討したチャレンジを紹介します。 汎用的な self-hosted runner を提供するために GitHub-hosted runner では ubuntu-la…

クックパッド生鮮 EC お届けの裏側 2022 年版

…んでみてください。 Docker に代表されるコンテナ技術と同様、規格化には物流にも絶大な恩恵があります。 シッパー 冷蔵機能のない車で肉や魚をはじめとしたチルド商品を運ぶために使っています。断熱材で出来ていて、この中に業務用蓄冷剤を入れて使用しています。 1 つのシッパーには上記のコンテナが 4 つまで入ります。 ラベル 商品やコンテナに貼り付けるラベルシールはマート流通で非常に重要なユーザーインターフェースです。現実の物体とソフトウェア上のデータを紐付けたり、直接ラベルに…

レシピページのOGP画像を動的に生成する

…てしまいます。幸い Docker イメージとしてデプロイする方式だとサイズ上限が 10GB まで引き上げられる仕様であったため、Lambda 上で動かすアプリケーションは Docker イメージとして作成しました。細かい話ですが vercel/og-image が依存している chrome-aws-lambda パッケージは Lambda の 250MB 制限に引っかからないように chromium バイナリを Brotli 圧縮したものが使われていましたが、今回はサイズ上限…

AWS CodeBuildでのRailsアプリのdocker buildを早くしたい

…のRailsアプリのDocker buildを早くするための工夫を紹介します。 docker buildを早くしたい理由 クックパッドでは多くのアプリケーションを運用していますが、その多くはAWS ECS上で動いています(ref. ECS インフラの変遷)。 デプロイにかかる時間の大部分を占めるのはCIおよびDocker imageのビルド時間なのでコード修正→ステージング環境へのデプロイ→動作確認→デプロイのデベロップルーティンを日に何度もくり返すような生活をしているときに…

Redshiftのデータをサービス改善に役立てるデータ転送システム Queuery

…。BarbequeはDockerとSQSを利用したジョブキューシステムです。 以前はこれでうまくいっていたのですが、2020年4月に起きたSQS障害で影響を受けたことや、Queueryの構成が複雑化していたことなどもあり、もっとシンプルで頑健性の高い仕組みにできないかと考えられていました。 そこで、2020年にRedshift Data APIが発表され、そのAPIに含まれるexecuteStatementとdescribeStatementを利用すればBarbeque依存を…

AWSフル活用!クッキングLiveアプリ「cookpadLive」を支える技術

…動かしています。( Dockerfile と jsonnet を書くと本番環境で動き始める素晴らしい仕組みです。*1) 基本的な Web アプリケーションであれば上記の仕組みだけで十分なのですが、 cookpadLive のように映像を扱ったり、リアルタイムでなにかをしたりする場合には工夫が必要です。AWS にはさまざまなサービスがあり、 cookpadLive の新機能を実装するときには、まず AWS のサービスをうまく使うことで実現できないか、という観点で技術調査・設計・…

ECS インフラの変遷

…ケストレータとして Docker を利用しています。Docker 自体は2014年末から本番環境にも導入を始めていましたが当時はまだ ECS が GA になっておらず、別のしくみを作って運用していました。2015年4月に GA となった ECS の検討と準備を始め、2016年より本格導入へと至りました。クックパッドでは当初から Hako というツールを用いて ECS を利用しており、Hako の最初のコミットは2015年9月でした。 https://github.com/ea…

KomercoとFirebaseの話【後編】 - Firebase運用の仕組化

…フィルタ可能です。 Dockerfileを使う場合は、gcloudを使うためのGoogle公式イメージがあるので、これを利用するのが便利です。 今からサービス公開するならFirebase Extension もし今の時点でサービスが未公開の場合はFirebase Extensionを使う選択肢があるかもしれません。 firebase.google.com こちらの場合、すでにFirestoreに入っているデータについてはエクスポートされないため、今回はgcloudの手法を選択…

形態素解析を行うだけのバッチをつくる

…をインストール(→ Dockerfile を試行錯誤) 解析対象を取得(→ SQL を試行錯誤) 解析器を実行(→ クックパッドの場合は ECS や IAM の設定を試行錯誤) 解析結果を保存(→ 同様に S3 や RDS の設定を試行錯誤) という一連の処理を各開発者が個別に行うのは非効率です。同じ解析器を使い、同じ解析対象(基本的には解析時の全レシピ)を集め、定期的に解析を行い、解析結果を簡単に使い回せるようにしたい。形態素解析が必要なプロジェクトが増えるにつれ、そういう…

レシピサービスのフロントエンドを Next.js と GraphQL のシステムに置き換えている話

…イ基盤が整っており、Docker で動きさえすればマルチプロセス化などは考えずに 1vCPU でタスクを横に並べるだけでいいので思っていたよりも楽に運用が可能でした。性能面でも、Next.js の SSR サーバーは 200rps 強を 1vCPU のタスク 7 つ前後で捌けているのでまずまずといったところです*4。 パフォーマンス パフォーマンスの変化についても少し触れておきます。フロントエンドのパフォーマンス計測には Calibre というサービスを利用しており、以下が …

検索インフラを安全に切り替えた話

…たび設定を更新して Docker image を作って〜というのは疲れるし、やってられません。 そこで Solr の Config API に目をつけました。 Config API を利用すると Solr の設定を REST-like API で取得したり、更新したりすることができます。これを利用して実験をあるほど自動化できるツールを作ることにしました。 solr-hako-load-tester 設計目標としては次のようなことを上げました。 多様な Solr のパラメータを…

Rubyの開発を支える技術

…実行ファイルを集めたDockerイメージです。 みなさんのお手元でも、次のようにdocker pullして試すことができます。 $ docker pull rubylang/all-ruby $ docker run --rm -ti rubylang/all-ruby root@50d2785e9b39:/all-ruby# ./all-ruby -e 'puts "Hello"' ruby-0.49 -e:1: syntax error exit 1 ruby-0.50 …

RailsアプリケーションのCIにDynamoDB Localを導入した話

…環境を用意して実行 Dockerイメージを利用 これら方法のうち、Dockerイメージを利用してDynamoDB Localを導入しました。理由は全社的にCodeBuildの利用が推進されており、CodeBuild上でDockerを利用してCIを回すという事例が社内に既に多く存在していたためです。CodeBuildはAWSが提供するCI/CD用ビルドサービスであり、Androidアプリ CIをCodeBuildに切り替えた事例などクックパッドでは広く活用されています。 上記検…

クックパッド Android アプリ CI を CodeBuild に切り替えた話

…ルドサービスであり、Docker 上に構築したビルド環境をいくつかのインスタンスタイプから選択して実行が可能なマネージドサービスとなっています。 並列実行も可能で、最大並列実行数である60までは自動的にスケールし、キャパシティを事前に設定する必要がありません*1。 1. 並列実行上限数の壁 元々3台構成で Android CI を運用していましたが、日中開発が活発な時間帯に多くのジョブが同じタイミングで実行されてしまうと、高頻度で CI が詰まってしまうことがありました。 ジ…

サービス特性にあった検索システムの設計戦略

…同じ環境にすることでDockerのデプロイに慣れているメンバであれば検索サーバのデプロイ学習コストを小さくとどめることができました。 精度のチューニング 上述したとおり、今回の検索サーバは、エリア内の生鮮食品の検索という特性からそもそも適合するアイテム数が少なく、それらをすべて検索結果に出すことが大切になります。一方で明らかに関係のないアイテムが混じりすぎるのも検索体験的によくありません。今回のキーワード検索においてこのバランスを保つために開発当初から今までに行った主な改善を…

データ分析プロジェクトの品質をキープしつつ効率的な検証をサポートする一時ファイル群の管理

…kiecutter Docker Science テンプレートで生成されているので、 Makefileをワークフローの管理に使用しています。MakefileにはKnowledge Base生成用のターゲットを登録してあります。 ローカルにおける検証では以下のようにキャッシュをOnにして実行しています。 $ make generate BATCH_SIZE=500 HIDEOUT_ENABLE_CACHE=True テストではモデルファイルを使ったE2Eのケースも含まれています…

Simpacker: Rails と webpack をもっとシンプルにインテグレーションしたいのです

…DN Heroku Docker Advanced settings Rails Engines Custom helper Bundler Parcel お察しの通り、半分以上 Simpacker は関係なくて単に webpack の設定です。初期の最低限の設定から、必要なものだけをこれらから選んで設定することで webpack の設定についても知ることができるので、webpack の入門にもいいのではないかと思います。単なるドキュメントでなく実際に動く例なので手元に持って…

モダンBFFを活用した既存APIサーバーの再構築

…。 もちろんECS(Docker)で動いていますし、オートスケールを設定してあるので、必要なときは勝手にECS task数が増減されます。 非同期処理に特有のつらい点として、「ものすごい勢いでメモリリークする」などの問題が全体公開直後に発生したりしましたが、 これも早期に解決できました(タイムアウト設定の問題でした)。 第三にJavaとSpringの選択についても満足しています。 Springについてはいろいろいい点はありましたが、 まずデフォルトでアプリケーション設定がファ…

NPSアンケートを自動分類した話

…システム構成図 まずDockerコンテナ環境で実行できるCUIアプリケーションにします。 今回の分析ステージではJupyter Labを使いながら分析を進めたので、関数やクラスなどを抽出する作業が発生します。 このときデータ読み出し時のカラム名や前処理後のベクトルの形などに関するテストを順次追加しました。 次にCI上でテストを動作させる設定を追加しました。このときローカルファイルに依存したテストがFailしていたので、順次ファイル依存の問題を解決しました。 また、前処理の速度…

本番/ステージング環境GPUぼくめつ大作戦

…枚 0.25秒/枚 Dockerコンテナリソースのチューニング TensorFlowレイヤーにおけるチューニングはここまでとして、次に実際本番環境と同等のCPU環境で動作させる場合のアプリケーションとDockerコンテナリソースをチューニングしました。 CPUで動作させる場合の本番環境は、c5.xlargeインスタンスからなるクラスタを利用します。4 そのためc5.xlarge環境で、リソースをモニタリングしながら、アプリケーションを実行します。 今回の検証ではリソースモニタ…

BERT with SentencePiece で日本語専用の pre-trained モデルを学習し、それを基にタスクを解く

… に nvidia-docker 環境を構築して実施しています。 nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 と tensorflow-gpu==1.12.0 を使っています。 この環境では計算機パワー不足では?と思われるかもしれませんが、料理というドメインに限定したデータを対象としており、予備実験をして様子を見てもいけそうだったので、これで学習を回しました。 モデルのパラメタは BERT の英語モデルのものと基本的に同じで、vocab_…

クックパッド機械学習チームのメンバが働く環境と役割

… API サーバを Docker コンテナで動作するようにまとめたレポジトリを作ります。次に、Jsonnet で記述する設定ファイルに Docker イメージ、Role、環境変数などの設定を記述します。このような環境だとサーバ構築にコストがかからないですし、必要であればサーバの構成(CPU、メモリ)も設定ファイルの書き換えにより簡単に修正できます。チーム間の複雑なやり取りが必要ないので、機械学習エンジニアはすくないコストでプロダクション環境に機械学習周りの計算機リソースを構築…

【開催レポ】Security Engineering Casual Talks #1

…ティを保障する方法 docker imageとかLambdaの脆弱性診断 開発環境のアクセス制限 開発者にどれくらい権限を渡しているか@本番環境 どれくらいアップデート作業をちゃんとやってますか 複数サービスの権限管理 誰に本番のアクセス権限を渡すのか(ルール・選別・etc) 固定IP以外での接続制限(クライアント証明書以外) 社員のID管理 イケてる社内NW 今後も参加していただいた皆さんにあげていただいたトピックを中心としてSecurity Engineering Cas…

R&D ができて 2 年が経ちました

…者間で共有するため、Docker と cookiecutter で実験環境を構築しています。さらに、クックパッドがこれまでに開発してきたツールや環境もフル活用しています。具体的には、hako でモデルをデプロイし、Kuroko2 でバッチを実行し、DWH でデータを管理しています。 高速な研究開発を支える GPU 計算機環境 Cookiecutter Docker Science Docker を利用した Web アプリケーションのデプロイ(R&D 外の取り組みです) クック…

Cookpad Summer Internship 2018 10 day 技術インターンシップ を開催しました

…の講義では、AWSやDocker、パフォーマンスチューニングなどの基礎的な知識について解説し、3日目に作ったRailsのアプリケーションを高速化するという課題に取り組みました。サーバーのパフォーマンスをコンテスト形式でスコアを競い、大変盛り上がりました。 cookpad/cookpad-internship-2018-summer infra - GitHub 全員が真剣に講義に取り組み、後半のOJTコースとPBLコースでの実践に活かしてくれました。参加していただいた皆様、本…

Chaos Engineering やっていく宣言

…るようになったのは Docker という環境のおかげというのと同じです。 最後に 現在、クックパッドでは Hako や ECS を使ったコンテナ環境の整備が進み、サービスメッシュの導入によりサービス間の通信を集中管理出来るようになりました。これにより、Envoy proxy を利用してサービス間通信で障害をエミュレートしたり、それらの設定を hako で行えるようになったりと環境は整いました。 まだまだクックパッドのマイクロサービス群の正常な状態( steady-state …

Service Mesh and Cookpad

…ng ECS or Docker, the Envoy process is running as a daemon directly in the instance, but the architecture is almost the same. There is a reason for not setting pull directly from Prometheus to Envoy, because we still can not extract histogr…

Service Mesh and Cookpad

…で可視化 ECS, Docker を利用せずに EC2 インスタンス上で直接アプリケーションプロセス動かしている場合は、Envoy プロセスも直接インスタンス内のデーモンとして動かしていますが、構成としてはほぼ同じです。直接 Prometheus から Envoy に対して pull を設定していないのは理由があり、まだ Envoy の Prometheus 互換エンドポイントからは histogram メトリクスを引き出せないからです*13。これは今後改善される予定なのでそ…

クッキングLIVEアプリcookpadTVのコメント配信技術

…う、hakoを使ったDockerコンテナのデプロイ環境が全社的に整備されており、他のサービスでもRuby以外の言語で実装されているものがあります。*2 *3 また、hakoによってDockerコンテナがECSにデプロイされるようになっており、必要に応じてECSのAuto Scalingの設定ができるので、このメッセージサーバーも設定しています。これにより、アクセスが増えてきてサーバーリソースが消費され始めたらスケールアウトして、アクセスが減ってサーバーリソースに余裕がでてきた…