Enjoy Architecting

Twitter: @taisho6339

2023年の振り返り

今年も仕事納めをしたので一年間を振り返りたいと思います。 2023年の仕事を振り返って 今年も全社モニタリング基盤の時系列データベースの開発・運用に携わってきました。 その中でも今年は「出来るか出来ないか分からないけど頑張って乗り越えて結果を出さ…

2022年の振り返り

今年ももうすぐ終わるので去年までと同様、一年間を振り返りたいと思います。 時系列データベースの開発チームへ異動 今年の4月から、Private CloudのSREチームから時系列データベース開発チームへジョブチェンジしました。 いきなり日本人が自分一人だけの…

2021年の振り返り

今年は結婚、LINEへの転職を経て、自分にとって大きな転換期となる年でした。 今年も例年と同様に振り返り、来年の糧としたいと思います。 LINEでの仕事のスタート 今年1月からLINEに入社してPrivate Cloudを作る部署のSREとして仕事をはじめました。 背景に…

高負荷環境でFluentdを安定運用するための3つの観点

本記事について Fluentdは機能としてはシンプルですが、 高負荷環境で安定的に運用するためにはある程度の知識が求められます。 そこで、本記事ではそれなりにログ流量の高い環境下で私が考慮した観点をまとめました。 本記事では、KubernetesでFluentdの信…

最短で理解して運用するGrafana Loki

本記事について Lokiについてまったく知識のない状態の人にとって、1からキャッチアップしていくのは とても大変なことです。 特にLokiはマイクロサービスで構成されているため、何を知るべきなのかの全体像が見えにくいと思っています。 そのため、Lokiをま…

Fluentdのバッファリングで抑えておくべき大事なポイント

概要 Fluentdで障害設計をする上でバッファリングの概念は切っても切り離せません。 本記事では、ドキュメントだけでは拾いきれないものも踏まえ、 Fluentdのバッファリングで抑えておくべき情報を体系的にまとめます。 バッファリングとは? Fluentdではロ…

KubernetesでFluentdの信頼性を担保するための3つの観点

概要 GKEなどを使えば自動的に標準出力のログが集計&集約され、Cloud Loggingなどを通して可視化されますが、 オンプレミス環境でKubernetesクラスタを構築する場合そうはいきません。 また単純なアプリケーションログの集計以外にも、 Kubernetesを使ってロ…

2020年の振り返りと今後の展望

本記事について 今年ももう終わるので今年やったこと、考えたことを振り返り、来年につなげようと思います。 また今年で一旦フリーランス辞めて会社員に戻るつもりなので、何を考えてその決断をとったのかを整理しておきます。 今年注力した技術 Kubernetes …

マルチクラスタKubernetes 3つのパターンと実運用事例

この記事はKubernetes Advent Calendarの7日目の記事です。 今回は、Kubernetesのマルチクラスタ化についての考察記事を書きます。 マルチクラスタの定義 マルチクラスタと一重にいっても色々とありますが、本記事では、「複数のKubernetesクラスタを並列に…

k8sを運用するなら絶対抑えておきたい、可用性とScalabilityを担保するための大事な観点

概要 先日、Kubernetes Novice Tokyoというイベントで「k8sのAvailabilityとScalabilityを担保するための大事な観点」というタイトルで登壇させていただきました。 運用する上で気にするべき、可用性とスケーラビリティに関する基本的な内容を、 今後のプロ…

Kubernetesの負荷試験で絶対に担保したい13のチェックリスト

概要 ここ最近、Kubernetesクラスタを本番運用するにあたって負荷試験を行ってきました。 Kubernetesクラスタに乗せるアプリケーションの負荷試験は、通常の負荷試験でよく用いられる観点に加えて、クラスタ特有の観点も確認していく必要があります。 適切に…

【Kubernetes】GKEのContainer Native LoadbalancingのPodのTerminationの注意点

概要 最近のGKEはContainer Nativeなロードバランシングを推奨しています。 これは、Alias IP, NEGという仕組みを使って、GCPのロードバランサーがPodのIPに直接ルーティングすることができます。 しかし、適切にPodを設定していない場合、クラスタのメンテ…

【Kubernetes】マルチクラスタの最適なヘルスチェックとFailOverについての考察

概要 ここ最近関わっているプロジェクトで、 クラスタを安全にBlue/Greenで更新するためにマルチクラスタ構成にして冗長化する案件を推進していました。 クラスタの安全な更新とクラスタのHealth Check、Fail Overは切っても切れない関係にあります。 そこで…

Istioはいかにしてサービス間通信のセキュリティを担保しているのか?

この記事について この記事では、Istioがどのような考え方でサービス間通信のセキュリティを担保し、 どのように担保しているかを概観レベルで整理する。 サービス間通信で担保したいものと従来のセキュリティモデル サービス間通信として担保したいものとし…

【ArgoCD】最小ではじめるプロジェクトごとのユーザ権限管理

本記事の概要 ArgoCDをクラスタにインストールするとまずadminユーザが作られます。 しかし、adminクラスタは権限が強く(いわゆるsuperuser)、自由にアプリケーションを更新したり削除したりできてしまいます。 マイクロサービスなどによってサービスごとに…

分散システムにおけるScalableな名前付けアルゴリズム「Chord Protocol」を実装してみた

概要 分散システムを学術的に学びたくて、 Chord Protocolというアルゴリズムが面白かったので実際に論文を読んで実装してみました。 この記事では、分散システムにおける名前付けの概念と、Chord Protocolの紹介、簡単な検証について言及していこうと思いま…

これだけは知っておこう負荷試験 ~その1 基本とお試し試験~

記事の概要 負荷試験はシステム運用において避けて通れないタスクであるが難易度が高いタスクでもある。 本記事ではまず、実際にWordpressに対して簡単な負荷試験を行いながら、 負荷試験における基本的な観点を整理していく。 負荷試験の主な目的 負荷試験…

Istioで割合でTraffic Managementするときにユーザごとにセッションを固定する

解決したい課題 Istioでweightによってサービスのバージョンを切り替えているとき、 リクエストの割合ベースで切り替えているだけなので、 同一ユーザでも異なるバージョンが表示されてしまう。 ユーザには少なくとも一定期間は同じバージョンを見せたいケー…

Istio + Argo Rolloutとカナリアリリース

本記事について Argo Rolloutを導入すると、様々なデプロイ戦略を実践することができる。 ただ少し実際の運用イメージが見えづらかったので整理してみる。 Argo Rolloutについての概要 Argo Rolloutとは通常のk8sのDeploymentに加え、カナリアリリースなどの…

【GCP Anthos】 Fail Overの挙動から最適なマルチクラスタ構成を考える

記事の目的 前回の記事でIngress For Anthosを用いてRegionにまたがったKubernetsのマルチクラスタを構築した。 今回は1段深く掘り下げて、クラスタ内に複数のフロントサービスを持つケースを考える。 このケースでAnthosで構築したマルチクラスタのFail Ov…

IstioのTraffic Managementの動作イメージを掴もう

本記事について Istioを使う上で、Traffic Managementを司るVirtual Service, DestinationRuleについて、 どう作用しているのかという点がわかりにくかったため、本記事にて整理し実際に動かしながら検証する。 前提として、サービスメッシュやEnvoyの基本的…

【GCP Anthos】Anthos Service Mesh + Ingress For Anthosを組み合わせたk8sのマルチクラスタを構築する

この記事について 前回の記事でIngress For Anthosを使ったマルチクラスタによるk8sの冗長化について触れた。 今回はManagedなIstioを提供するAnthos Service Meshも取り入れ、 サービスメッシュを導入したマルチクラスタを実際に構築してみる。 Anthos Serv…

【GCP Anthos】 Regionに跨って冗長化したKubernetsのマルチクラスタをロードバランシングする

Anthosとは? アプリケーションを、OSSをベースにモナタイゼーションするための統括的な機能を提供するプラットフォーム。 モナタイゼーションとは? マイクロサービス化 インフラとアプリケーションの疎結合化 サーバレス 自動化 なるべくManagedへ Anthos…

これだけは知っておこうTLS

記事について セキュリティのためにTLSを導入しようとはよく聞くが、 そもそもTLSは何を担保するものなのかを整理する。 前提として知っておくべきこと デジタル署名 署名者の秘密鍵で対象データ(のハッシュ値)を暗号化したものがデジタル署名 秘密鍵は署…

【2019】フリーランスエンジニア活動 振り返り

趣旨 2020年が始まるので、 2019年にやったこと、アウトプット、反省点をまとめ、翌年の指針を整理したいと思う。 前提 フリーとして働く、インフラとバックエンドを専門とするソフトウェアエンジニア。 現在は法人成りしていて、請負でベンチャー企業で開発…

Firestore + BigQueryで簡単なログデータ&プッシュ基盤をつくった話

導入 アプリのイベントログや、DAUなどの集計を考えるときに真っ先に選択肢に上がるのがFirebase Analyticsだ。 ユーザを特定のセグメントに分割して扱い、セグメントごとにプッシュ通知を送ったり、 特定のIn App Messageに対する特定のイベントへのコンバ…

Stackdriver Monitoringを用いたシステム監視

記事で書くこと Stackdriver Monitoringを用いたシステム監視を行う方法をまとめる。 特にStackdriver Monitoringはドキュメントからすぐに汲み取ることが難しい部分があるので実際に動かして検証した結果を記載する。 ※下記弊ブログのやきまわし Stackdrive…

フルリモートメインのフリーランスエンジニアの活動記録 ~2019-05~

記事について フリーランスとして開業し、 フルリモートメインで仕事を行ってきて7ヶ月ほど経過したので振り返りを行い、 何を考えて仕事を選択し、どんな学びを得てきたかを整理する。 これからフリーランスになる人や、フルリモートでフリーランスって実際…

開発生産性を高めるアーキテクチャの本質 ~Clean Architectureを読んで~

どんな記事を書くか? 「Clean Architecture 達人に学ぶソフトウェアの構造と設計」という本を読み終えた。 非常に勉強になる本だったので、自分なりの解釈をしつつ学んだことをまとめる。 ※私個人の解釈を存分に含んでいる アーキテクチャは何のために設計…

【保存版】4年間現場で培ったプロダクト開発を支えるエンジニアリング

何を何のために書くのか プロダクト開発を行うエンジニアチームが、 どんなことを目標にして、 どんな環境を作っていくのかを、 4年間プロダクト開発を行ってきた自分の集大成として一度言語化してまとめたい。 自分が関わった現場では何のためにどんなこと…