PONCOTSU

インフラ領域を主にあれしてます

Windows開発機では functions-framework-pythonのローカルエミュレータを動かせない

Cloud Functionsをそれなりに利用するようになると、動かす関数の信頼性・安全性を向上させる、あるいは開発体験を向上させるためにユニットテストをしっかり書くようにする・CIを回すようにするといった段階に進むことが多々あると思います。 そこで活用し…

CloudSQLのメンテナンスに対する運用を考える

CloudSQLを使っていると逃げきれない仕様の一つに定期メンテナンスがあります。 数ヶ月に一度、最大で90秒ほどDBインスタンスが落ちる仕様なため、プロダクション環境などでCloudSQLを利用していると、必然と90秒のメンテナンスによるサービスダウンが発生し…

複数コンテナを有するPodのHPA設定の挙動を深ぼる

HPAの設定ではDeployment単位で閾値を指定しているのに、扱うリソースはPodなので少しわかりづらいとおもったので、複数コンテナを有するPodに対してHPA設定をかけた場合の計算ロジック(詳細版)をまとめました。 HPAのreplicaset数算出方法を整理 公式を眺…

Pod内で複数コンテナを運用している場合のHPAの設定方法

要約すると「複数コンテナを有するPodに対してHPA設定をかけるなら、コンテナすべてにlimits設定をかけておきましょう。でなければ正常に機能しません」という些末な話になります。 課題 HPA設定を付与したリソースを確認しようと思いGKEのコンソール画面を…

DeepL opener PROのおかげで勉強効率が上がった話

先日、DeepL opener PROというchrome拡張機能が公開されたので、さっそく使ってみました。 この記事はこの拡張プラグインを使ってから1週間経った時点での感想記事になります。 DeepL opener PROとは何か 個人で契約したDeepL APIのAPIキーを入力すれば使え…

kubevalでmanifestのフォーマットをチェック

YAMLベースのドキュメントのコードレビューって、フォーマットのズレや期待していない値かどうかの確認で不備を見逃してしまい、あとあとリリース時の kubectl apply -f manifest.yaml などでうまく実行できずに焦ることが経験上、多いです。 今回はコードレ…

ServiceとPodだけでほぼダウンタイムゼロのリリースを実現する

ラベルを使ってPodを世代管理しておくと、Serviceを更新するだけでリリース(トラフィックルーティングを切り替える)を行なうことができて便利です。 要約 実装 Podにラベルを付与し、バージョン管理を行なう(dockerimageのタグと一致させておくとミスリー…

Dartの変数

変数を宣言 基本形はこう。 型 変数名 = 値; という形をとる。 int number = 1; String name = 'hoge'; さらにDartは型推論機能を持っているので、var記法 を使って、型を指定せずに変数を宣言することも可能。 var number = 1; var name = 'hoge'; dynamic…

RubyスクリプトからMySQLにログインする

ActiveRecord上からDBに接続すると実際にどんなふうにDB操作をプログラムからやれるものかのかイメージしづらくなる。そこで今回はRubyのプログラムを書いて、MySQLにログインするためのスクリプトを書いてみる。 対象読者 ある程度Rubyを書いたことがある …

利用できるデバイス情報を把握する lsblkコマンド

ハードデバイスについて勉強してみた。 Linuxはデバイスファイルを通してデバイスを利用することができる すべてをファイルとして扱う思想のLinuxでは、接続されたデバイスもファイルを通して利用することになっている。 そのホストとデバイスの入出力を扱う…

macosでJVMのスレッドダンプを取得する

JVMのこと、詳しくなりたくって、でも何もできずにいる自分がただそこにいるだけで、悔しくて泣きたくて。 そんな気持ちを最近持ったので、勉強しはじめた。 とりあえずjavaをインストールする ORACLEのインストールガイドを読むのが一番。 MacでのJavaのイ…

Infrastructure as Codeの価値・原則・プラクティス・評価軸

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス作者: Kief Morris,宮下剛輔,長尾高弘出版社/メーカー: オライリージャパン発売日: 2017/03/18メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る Infrastructure …

nginxの負荷分散手法(1) 重み付け

nginxでは、リバースプロキシ機能を使って、負荷分散を行なうことができる。 主なやり方は3つ。 重み付けによる負荷分散 稼働系と待機系 接続数による負荷分散 今回は、 1. 重み付けによる負荷分散 について。 設定方法は簡単。 upstreamコンテキストでまと…

サーキットブレイカーパターン:連続して起こる同様の障害への対応策

障害が起こりにくい・万が一、障害が起きた時にシステム側で早急な対応をするような仕組みを勉強しております。そこでサーキットブレイカー。 サーキットブレイカーパターンとはなにか 電子回路にも使われている遮断機が主な概念になっているパターン。何か…

RailsでURLの末尾にスラッシュ(trailing_slash)をつける方法

SEO要件のためにURLの末尾に/(スラッシュ)をつけることがあります。静的ファイルや少ないページ数のサイトであれば愚直にスラッシュつける設定をやっていけばよさげですが、Railsのようなフレームワークで実現するにはどうしたらよいでしょうか。機会があ…

go run と go buildの違い

Go

Go言語の基礎の基礎。Goプログラムを実行する方法と、その注意点についてまとめました。

Site Reliability Engineeringとは何か?より具体的に考えてみる

SRE

結論から先にまとめると、安心安全なシステム開発・時代の変化に沿った運用ができるエンジニアリングが、つまりはSREだということ。この点、要素分解して、もっと現場に落とし込む方法について書いていきます。 SRE本でベンジャミン・トレナー・ソロスが伝え…

昨今のリプレイス案件でハマるであろう、プロジェクトの進め方の注意点

まず背景から話すと、某企業の某プロジェクトで既存システムのリプレイスを行なっています。そこで得た知見を、特にプロジェクトの進め方について今の所の自分の考えをまとめておきます。 レガシーからナウでヤングでモダンなシステムに リプレイスをすると…

大量のデータを処理するときに知っておきたい前提知識

大量のデータを処理するとき、何の工夫もないまま設計していると、すごく結果出力までに時間がかかる。このことはなんとなく分かってはいるけども、なんとなくのレベルなので勉強してみた。 遅くなる理由 結果からいうと、大量データを素直に捌こうとすると…

エントリタイトル

** エントリ本文