criu restoreを非特権コンテナから呼ぶことはできるか

CRIUによるプロセスのリストアには複数のcapabilityが必要であり、コンテナ内部で行うためには--privileged相当で起動された特権コンテナでなければいけません。例えば、TCP connection repairにCAP_NET_ADMINが必要なのは明らかですが、もっと単純なプロセ…

sigstoreのKeyless Signingでは何を検証しているのか

最近、個人的にsigstoreのKeyless Signingがアツいです。以下のブログを読みました。 これらの記事は主にコンテナイメージの署名について解説しているのですが、sigstoreはバイナリの署名にも使えます。以前から、複数メンテナ体制で秘密鍵をどう共有しよう…

コンテナはなぜ安全(または安全でない)なのか

CVE-2019-5736を覚えていますか?今年の2月に見つかったrunc(Dockerがデフォルトで利用しているコンテナのランタイム)の脆弱性で、ホストのruncバイナリを好き勝手にコンテナ内部から書き換えることができるというものです。 脆弱性の仕組みに興味があった…

Rubyのprivateを考える

RuboCopのIssueを眺めていると、いろいろな人のRubyの考え方に触れることができて面白い。例えば、多くのRubyistにとってprivateなメソッドを宣言したいときには、以下のような書き方をすると思う。 class Cat def meow puts "Meow!" end private def bowwow…

gomockでaws-sdk-goをモック/スタブする

普段、Rubyを書いていると、Goでaws-sdkを扱う際にAPIの呼び出しをモック/スタブするのが意外と大変で苦労する。よくGoのテストのプラクティスとして、スタブしたい関数をグローバル変数に入れておいて、テスト時にすり替えるというのがあるが、もうちょっと…

RuboCopの Rails/InverseOf について調べた

最近、RuboCopへのパッチを投げるようにしているのですが、なんか良さそうなバグは無いかなとissueを漁っていたところ、こんなissueを見つけました。このissue自体は単なるfalse positiveなので、まぁ対応すれば良いのですが... こっちがその問題のCopが追加…

RailsアプリをECSにのせてecs-cliでデプロイとかをする

RailsのECS移行事例なんて既に山ほどあるので、特に書くつもりは無かったのですが、実際にやってみると 時代が進んで、より便利なものが出てきている デプロイどうするのよ、となったときに各自が最強のECSデプロイツールを作っていて、参考にならない とい…

PHPをもっと良く書くためのLinterを作った

php

久々にPHPを書きたいなと思い、まず、頭の中の古い常識をクリアするために一通りphp.netを眺めていました。僕のPHPの知識は5.6辺りで止まっているのですが、ヌル合体演算子とか型宣言とか結構便利な感じになってますね。 ヌル合体演算子というのは、簡単に説…

terraform planで消耗しないためにTFLintを作った話

以前から、インフラそのものの構成管理にはTerraformを利用しています。主にAWSのリソース管理に使っていて、Terraform自体はaws-sdkのラッパーみたいな感じなのですが、宣言的に構築できるので、複製が容易であったり、変更に必要な操作(modify系のAPI実行…

ALBとTerraformによるBlue-Green Deployment

最近、AWSからALBというビックなアップデートが発表されました。 【新発表】AWS アプリケーションロードバランサー | Amazon Web Services ブログALBは従来のELBと比べてコンテントベースルーティング、優先度の設定、HTTP/2、WebSocketの対応など、さまざま…

Capistranoでデプロイした後にAMIを作って世代管理するプラグイン書いた

タイトルの通り、デプロイ後にAMIを作ってAMIの世代管理もできるCapistrano3向けのプラグインを作りました。 要件としては意外とありそうなのに、(自分で調べた限り)gemがなかったので、作ったという経緯です。AMIを作るだけならば、適当にaws-sdkをrequir…

株式会社アクトキャットに入社しました

入社エントリです。正直ちょっと書くのに憧れてました。 標題の通り、株式会社アクトキャットに入社しました。

可用性の高いcron処理の為にJob Observerパターンを使う

1日に一度だけ、1時間に一度だけ、あるタイミングで処理を走らせたいというニーズは常に存在します。昔から多くのエンジニアはそういった要望に対して、サーバを用意して、crontabに独自の魔法を書くことで対応していました。時は現代、インフラといえばAWS…

PackerとTerraformで始めるミニマムなAWS構成管理

前回の記事ではDockerとECSを使ったAWS上でのInfrastructure as codeについて言及しましたが、サーバリソースの構成管理についてはAWSのマネージメントコンソールから手動で行わないといけなかったり、コンテナを用いたアプリケーション構成を強制され、従来…

DockerとECSでInfrastructure as codeを体感する

Infrastructure as codeの思想に感動し、AWSを使い始めて早1年になりますが、なんだかんだで最近はコードを書いてばかりでAWSを触っていませんでした。貴重な無料期間も終了し、非常にもったいないことをしたなと反省中です。さて気を取り直して、ついに先日…

FuelPHPのデフォルトバリデーションルールの仕様について調べた話

最近仕事でFuelPHPを使う機会を得たのですが、FuelPHPのデフォルトで用意されているバリデーションルールで少しハマった部分があったため、戒めのためにまとめておきます。意外とググッても情報が出てこない部分があって、公式ドキュメントはそれなりに充実…

Railsで好き嫌い管理アプリ作った

https://kobayasitabel.herokuapp.com/タイトルの通りです。 知人の好き嫌いが激しすぎて何ならば食べられて何ならば食べられないのか判別が難しかったので勢いで作りました。 中身は大したことのない簡単なものですが、Railsの開発の速さと生産性の高さを感…

ローカルで開発したRailsアプリをCapistrano3でEC2にデプロイする

最近RailsのScaffoldから色々開発するのにハマっていて、WEBRickで動作確認しながら、ちょこちょこ開発していました。 そろそろ公開環境へのデプロイ自動化を考えないとなーとなって、せっかくなので今までやっていた単純なAnsibleを使用した形ではなく、デ…

RailsのScaffoldでネストしたResourceを作る

先週、Rails寺子屋に参加させていただきまして、いまさらながらRailsデビューを果たしました。もともとバックエンドにはFuelPHPを使っていたので、未だにRuby独自の記法に四苦八苦しながらも、Scaffoldの強力さに感動を覚えている次第です。お恥ずかしながら…

AngularJSでクリックする度に一定時間だけ表示される要素を作る

最近、AngularJSが楽しすぎてフロントエンドばかり触っています。Yeoman便利すぎgrunt最強すぎ。ストレスフリーに色々試せるので、つい遊びすぎてます。 今回は小ネタですが、意外と情報がなくて困惑したのでメモとして残しておきます。 JavaScript初学者な…

Yeomanを使ってAngularJSによるAPIリクエストと非同期の画面更新を高速実装する

過去の記事からもわかっていただけるかと思うのですが、AWSやらFuelPHPやら、どちらかというとバックエンドの仕組みやインフラの仕組み作りを楽しいんですよね。 そんな感じで色々自分なりにやりつつも「あー、やっぱり自作アプリぐらい作っておきたいなぁ」…

Heroku Dropbox Syncでブラウザからデプロイする

最近興味があり、Herokuを触り始めたのですが、今年の新人研修でクラウド関係の話を非エンジニア含めた場で話させてもらえる機会があるので、AWSに限らず、Herokuの話をしようかなと思っています。 個人的にはクラウドといえば、AWSのようなIaaSなのですが(…

FuelPHPのMVCについてちゃんと考えてみた

フレームワークというものを学びはじめてざっと5ヶ月くらいになるんですが、FuelPHPに限らず、CakePHPやRuby on RailsなどのWebアプリケーションフレームでは必ず登場するキーワード「MVC」についてちょっと理解が浅かったので、改めて色々調べてみました。 …

AWS Data Pipelineで日次バッチ処理取得データをS3にポストする

最近コードを書いてはいるものの、なかなかブログにできるネタがないため、またブログを書くとなれば結局AWSとかインフラ側の話になっちゃうんですね。 さてさて、今回はCDPで問題になりがちなバッチ処理、ジョブスケジューリングです。単純に実現するならば…

JAWS DAYS 2015に行ってきました

JAWS DAYS 2015 http://jawsdays2015.jaws-ug.jp/AWSユーザの祭典、JAWS DAYS 2015に参加してきました。 日本各地のJAWS-UG支部が東京に集まるということで、結構地方の方もいたみたいですね。とはいえ、やっぱり関東地区の黒い札の方が多いようでしたが・・…

AWS CLIでもっと快適に開発環境を起動する

最近、時間がないことを理由に開発環境構築だけで、私的にプログラムを全然書いていないのですが、忙しさを理由に平日のコーディングをサボってはいけないなと思えてきました。では、仕事を終えてコードを書こうと決心すると、 AWSマネージメントコンソール…

Jenkinsの自動デプロイにAnsibleを使ってみた

ありがたいことに、以前のJenkins自動デプロイ記事がそれなりに多くの反応をいただきまして、冷静に見直してみたのですが、ちょっとデプロイ処理が雑だなと。 最近ではデプロイをやるにも、Capistranoやfabricなどのツールがあり、多様化するデプロイ要件に…

dots. Summit 2015に行ってきました

dots. Summit 2015 http://eventdots.jp/promotion/dots_summit_2015行ってきました。以前より勉強会の登録や情報収集で利用させていただいているdots.にて、運営元のインテリジェンスさんが企画するdots. Summitの情報が公開されていたので、早々に登録。昨…

Jenkins + GitBucketなインスタンスでFuelPHPをバージョン管理する環境構築してみた

以前までの記事でデプロイ、テストの自動化ができたわけですから、これで後はゴリゴリコーディングするだけ、ということで、Route 53でドメイン購入までしたわけですが、いまさらになってGitHubをリポジトリホストに使うのはちょっと厳しいなと。 できればAW…

JenkinsでFuelPHPのユニットテストを自動化してみた

Jenkins、いいですよね。オペレーションの自動化には美があります。前回の記事ではGitによるデプロイ自動化を行いましたが、その時点で既にユニットテストの自動化は想定していたので、今回はそれを実現してみます。 これによって、機能を実装してプッシュす…