Kekeの日記

エンジニア、読書なんでも

リアクティブプログラミングとReactive Extentions

画像引用: https://blog.oz-code.com/reactive-wpf-part-1-introduction-reactive-extensions/ 本記事 本記事ではRxについてなるべくわかりやすく解説するつもりです。 また、私の過去の記事で注目していたメッセージシステムについてもリアクティブプログラ…

SVGのsymbol、use要素とviewBox属性の挙動

本記事 私は数ヶ月ほど前に、友人の間で作っていた個別プロジェクトのAIエンジン、インフラ、サーバーサイド、フロントエンドを担当していました。 プロダクトでは人工知能(特にニューラルネットワーク:NN)を考えていたため、プロジェクトの紹介ページでは以…

ポートフォリオサイトをVue.jsからNuxt.jsに書き換えてサーバーサイドレンダリングをする

本記事 本記事はVue.jsを使ってGoogle App Engineにホストしている静的なサイトをNuxt.jsを使って書き直そう思います。 題材は以前使った自分のポートフォリトサイトです。 keisukeyamashita.com GoogleCloudPlatform(GCP)で無料枠を使いきり画像などのコ…

Small Imageと堅牢性のためのDistroless ImageとビルドのためのBuildKitの検証

本記事 本記事ではDockerでコンテナイメージを作るときに使えるBuildKitの話とSmall Containerを作ることができるDistrolessの話をしようと思います。 以前、Building Small Containerのために使えるBuilderパターンを紹介しました。 www.1915keke.com アプ…

Knative、KubelessでServerlessFunctionを構成する

本記事 本記事では実際にKuberenetes上でKnativeとKubelessを使ってみて、使い勝手などをレビューしたいと思います。 目次 本記事 目次 なぜCloud FunctionsやAWS Lamndaではだめなの Knative Knativeとは 公式サイト 特徴 Servingとは Bulidとは インストー…

HelmからKustomizeに乗り換える!軽量で、シンプルで、使いやすい!

kustomizeを使ってみる kustomizeとは YAMLファイルを再利用可能で設定変更のしやすい宣言的管理をします。

データベースクラスタリングシステムVitess

本記事 本記事ではKubenetes上にデータベースクラスタリングシステムの入門として導入して、使い勝手や操作方法、運用方法などの学習します。

KubernetesのDownwardAPI

本記事 本記事はKuberenetesのDownward APIを使ってみて学習します。

PodのInitContainerとNode(GCE)のStartupScript

本記事 本記事では、たまたま趣味で使っているKubernetesで、PodやNodeを立ち上げた時に実行したい起動スクリプトのようなものがあります。 今回はどのようにそれを実現できるかを調べていた時にInitContainerとStartupScriptを知ったので、今回はその使い方…

gRPCとProtocol Buffers 3とKubernetesとEnvoy

本記事 本記事では、gRPCについて体系的に取り上げ、開発方法や運用方法を書いていこうと思います。 私はgRPCは使ったことも、運用したこともあります。同じRPCにを実現する方法としてJSONRPCというプロトコルがあります。 一年くらい前に取り上げた記事です…

KialiでIstio Service Meshをよりリッチにする

本記事 この記事では、Istioのサービスメッシュに併せてさらなるフィードバックを与えてくれるKialiというものを試していこうと思います。 Istioは何もかもできちゃいますが、Kialiを使うことでさらにリッチに情報を集めることができるので今回は検証して行…

IstioでKubernetesのサービスメッシュを構築してみる

本記事 どうやらKubernetesクラスタへのHTTPリクエストのレスポンスタイムがスパイクするということで引き続き原因を探っています。 以前の記事で同じくサービスメッシュを構築できるLinkerdというものを検証してみました。 その記事が以下のものとなります…

LocustをKubernetes上で構築して分散負荷テストして、Linkerdでサービスメッシュのデバッグを行う

動機 実はLocustは10ヶ月以上前に使ったことがあります。 しかし、今回はサービスメッシュをLinkerdで構築して、マイクロサービス間のレイテンシなどを計測していこうと思いました。

Linkerdでサービスメッシュを構築してKubernetesクラスタのメトリクスを見る

動機 ひとり趣味で作っている機械学習サービスをマイクロサービス化してGoogle Kubernetes Engine(GKE)で構築しています。 しかし、外部からアクセスした時にレスポンスタイムが突発的にスパイクすることがわかりました。 Grafanaで可視化すると以下のようで…

Stackdriver Profiler(Cloud Profiler)を使ってKubernetes上のサーバー動的解析を行う

本記事 本記事ではKubernetesにStackdriver Profile(現時点ではBeta版)を使ってみて、自分のコードの動的解析を行ってみます。 それを通してStackdriver ProfileのGUIの操作方法などを習得したいと思います。

Embulkを使ってMySQLのデータを並列処理で転送する

本記事 本記事はFluntdのバッジ版にあたるEmbulkを使ってMySQLにあるデータを転送してみようと思います。

Cloud Pub/SubでCloud Buildのビルド通知を受け取ってCloud Functionsをトリガーする

本記事 本記事はCloud Buildのビルド通知をCloud Pub/Subに送ってCloud Functionsをトリガーするというタイトルで、実際のCIの現場で、Buildのビルド後として関数を走らせたいと思います。

Cloud BuildでPrivate RepoをContinuous Integrationをする

本記事 本記事はGoogle Cloud PlatformのCloud Buildを使ってGithubにあるPrivateリポジトリのソースコードの変更をトリガーに、コンテナイメージをビルドしてみようと思います。

Cloud Scheduler+Cloud FunctionでCloud SQLに保存してあるLine家計簿BotのデータにBatch処理をする

本記事 私の家族は自分が作成したLineBotを使って家計簿を管理していて、毎月、だれがどのくらい使ったかを算出できる様になっています。 本記事ではGoogle Cloud PlatformのサービスであるCloud Schedulerを使ってCloud FuntionでBatch処理をしようとする記…

Dockerコンテナの脆弱性、コストを抑えてパフォーマンスを上げるBuilding Small Containers

本記事 以下のようになんとなくコンテナイメージを使っていませんか。 FROM golang:1.9 ... しかし、これはセキュリティ的に脆弱性をアプリケーションに持ち込むだけでなく。Google Cloud Registryを使っているならコストがより多くかかるなどいいことがない…

JsonPathを変幻自在に操るKubernetes使いになろう

JSONPathとは 何かしらCLIツールでコマンドを実行した時にフォーマットをするようなものである。 たとえば以下のように実行する kubectl get pods -o json すると生のJSONが返ってくるので、このjsonにpathを指定することになる。 これに対してjsonpathを指…

Kubernetesで安全にマシンタイプを変更するDrainとPodDisruptBudget

動機 プロジェクト開始のときは、machine typeはn1-standard-1でした。 しかし、いろんなデプロイメントをするとクラスタのスペックが足りなくなりました。 今回はそのようなときに使える、安全にNodeのマシンタイプを移行するソリューションを記事にしました

Cloud Functions, Kubernetes, DockerなどにセキュアにSecretを渡す時に使えるCloud Key Management Service

本記事 本記事はCloud Key Management Service(KMS)を使うことによってSecretをセキュアにアプリケーションに保存するを解説します。 また、本記事ではSecretをGitHub内などで管理するための手法も解説します。

KubernetesのResource Request、LimitとHorizontal Pod Autoscalerについて

動機 KubernetesでPod間通信をしたときに、レスポンスタイムがスパイクするような現象に遭遇しました。 アプリケーション側のコードには問題がなさそうで、Kubernetes上でホストしていてCPUなどリソースが怪しいのではないかという予測しています。 今回はRe…

KubernetesのNode AffinityとInternal Pod Affinityを使ってPodを高度スケジューリングする

はじめに Kubernetesには高度スケジューリングを行えるAPIが用意されていあるので、今回はまとめようと思います。 どれもlabelを使って認識するのでその事前知識が必要です。 Affinity, Anti-Affinityとは Affinity, Anti-Affinityとは

アドテクコンペに参加!わずか0.1秒の過酷な広告の世界

はじめに 広告がどう決まるのかは説明しますが、お金の流れなどは説明しません。 今回はインフラやサーバーサイド、チーム開発のお話です。 参加したコンペ 今回は以下のアドテクコンペにサーバーサイドエンジニアとして参加してきました。 www.cyberagent.c…

人生は短い(原題: Life is short)

皆が知ってる通り、人生は短い。私が幼いとき、私はよくこのことについて考えていた。 本当に人生は短いのか、それとも永遠に生きれないことについて文句をつけているだけなのか。もし、10倍も人生が長かったら同じことを思うだろうか。

YoutubeのiOSアプリ(クローン)のコードを読む会 AccountVC編

はじめに 前回は以下の記事でHomeViewControllerについて学習しました。 今回は以下のようなAccountのViewを見ていこうと思います。

OAuth2.0の仕組みとクライアントの作成

はじめに 今回はOAuth2.0の認可方式を取るGitHub APIを使って、クライアントの作成を行いたいと思います。 動機 自分がよく使うからにつきます。 Githubで、その1日のコミット数をSlackに投げたり、フル活躍しています。 せっかく使っているのなら、記事と…

YoutubeのiOSアプリ(クローン)のコードを読む会 NavigationController編

はじめに これまでYoutubeのクローンを教材に勉強してきて、 HomeVC AccountVC をやってきました。特に変則的なことはなかったのですが、Youtubeといったら使いやすいNavigationVCだと思います。 今回はそれを解説したいと思います。以下のようなものが対応…