エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

AWS・オンプレと GCP を VPN で相互接続する際の勘所

こんにちは。エムスリー CTO の矢崎 @Saiya です。

弊社ではクラウド環境の利用や移行を推奨しており、AWS, GCP のマルチクラウドやオンプレミス環境との相互通信を安全に行うために今回 AWS と GCP を VPN で相互接続しました。

しかし、AWS と GCP を VPN で接続する方法は調べると見つけられるのですが、例えば以下の点についてまとめて説明している資料がないため苦労しました:

  • GCP の HA VPNでのセットアップ方法
    • Classic VPN と HA VPN *1 はかなり仕様が異なるのですが、Classic 前提の情報が多く惑わされやすいです
  • 複数の VPC での推奨構成とその実現方法
  • GCP と AWS の VPN の IPSec のパラメーター調整の仕方

そこで、本稿では AWS と GCP にある複数の VPC を VPN で相互に接続する構成の全体像とハマりどころ・注意点を筆者の知る範囲でまとめました。

なお、本稿では AWS Transit Gateway *2 やオンプレミスとの専用線・VPNはすでに構築済みとし、それらの設計・構築については触れません。 それらの使い方や設計の勘所・難所・ハマり所については 技術書典8 2日目の *3 スペース お-46 にて頒布予定の エムスリーテックブック2 にて詳述いたしますので、ご興味ある方は是非そちらでお求めいただければと存じます。

f:id:Saiya:20200127192910p:plain
エムスリーテックブック2 (技術書典8 の 2 日目)

今回構築するネットワーク・トポロジー

f:id:Saiya:20200127200846p:plain

上図のように GCP <-> AWS <-> オンプレミス を接続することで、3 者間での相互通信を可能とします。 例えば GCP 内の任意の VPC (Network) から AWS の任意の VPC やオンプレミスと通信することが可能になります。

なお図では HA VPN を使って 4 本の VPN を設置していますが、可用性・SLA を犠牲にコストの節約も可能です (後述)。

以下、GCP <-> AWS 間の VPN 敷設と DNS 転送について概略と難所を説明します。

*1:HA という名前ですが、後述のように冗長性を犠牲に 1 VPN 接続分だけのコストで運用することも可能です

*2:AWSで多数のVPCを扱う際には必須と言っても良いサービスです。

*3:今回から2日に分けて開催になりました

続きを読む

VPoEとしてこの2年間を振り返って

こんにちは。エムスリーエンジニアリンググループ執行役員*1兼VPoE兼プロダクトマネージャーの山崎です。

本ブログはエムスリー Advent Calendar 2019の25日目の記事です。

エムスリー Advent Calendar 2019の締めとして何を書こうか色々と迷ったのですが、今回はVPoEらしく、「VPoEとしてこの2年間を振り返って」と第して2019年を締めくくりたいと思います*2

qiita.com

はじめに

2017年12月にエムスリーにおいて始めてVPoEが設置され、私が初代VPoEに就任しました。 それからの2年間は本当にあっという間に過ぎ、2年も経っているとは信じられないというのが正直なところです。 一方で、その間、多数のチャレンジをしてきました。

この記事では、社内外の参考になるかもしれないと思い、それらのチャレンジを抜粋して紹介したいと思います。 ちなみに、評価制度と報酬に関するチャレンジはセンシティブなので割愛します*3

f:id:yamazaki-m3:20191224225724j:plain
年末っぽくエムスリーデジカルの忘年会の写真です。

*1:2019/11より業務執行役員というポジションから執行役員というポジションにマイナーチェンジしました!

*2:今年の業務は12/27まで続き…なんなら運用は12/31の24:00まで続きますがそこはよしなに。

*3:CTO、VPoEの方で聞きたい方がいらっしゃればCTOミートアップなどで個別にお声がけください。

続きを読む

k8sハニーポットとログ出力の話

本記事はエムスリー Advent Calendar 2019 - Qiitaの24日目の記事です。

こんにちは。エムスリーエンジニアリンググループの木村です。 業務ではBIRというチームでアンケートシステムの開発をやっています。

今回は個人的に構築しているk8sハニーポットシステムとそこで生じたログ出力の問題について話をしようと思います。

続きを読む

サーバサイドアプリケーションにおけるリリース時の不確実性を減らす

エムスリーエンジニアリンググループの松原@ma2geです。この記事はエムスリーAdvent Calendarの23日目の記事です。

実は10月よりチームリーダーからエンジニアに戻り、開発メインの仕事を再びしています。 エンジニアリングマネージャーの振り子という話が一時期話題となっていたのですが、まさにそれをしているところです。*1 *2

現況

さてソフトウェアエンジニアとして今何をしているかというと、 クラウド電子カルテ「エムスリーデジカル」の開発チームに入り運用から開発まで一通り対応をしています。

デジカルチームの主な技術スタックは Rails, Angular, React, Scala などに加えて、インフラ周りは AWS の各種サービスを利用しています。 基本的にエンジニアは得意分野を生かしつつもなんでもやるスタンスで今の所仕事をしており、 フロントからインフラまで一通り対応しています。楽しい。

私はというとサーバサイド(特に Rails)に強みを持ちつつも、フロントからインフラまで見つつ仕事をしています。 フロントは以前主に触っていたのが Backbone.js から一気にジャンプして React ということで、いくつかの時代を乗り越えて一気に洗練された世界観に触れられたり、 Auto Scaling が有効に使われているインフラ環境を生で体験できたりと日々新しいことを学べています。楽しい。

さてデジカルはまだまだこれから事業を伸ばしていこうというフェーズで比較的プロダクトとしては若く技術も比較的新し目のものが多いです。 しかしそれでも初期のプロダクトからは数年経過しており徐々にレガシーとの戦いも目立つようになってきています。 すなわちやるべきことが溜まっている状態で改善できることしかありません。楽しい。

今回はこの中でデプロイの仕組みを改善した話をします。

f:id:ma2gedev:20191220154313j:plain
本文とは関係ありませんがピアノの内部構造

続きを読む

業務を効率化するためにツールを自作する ~ Emacs と時々 Electron ~

この記事はエムスリー Advent Calendar 2019 の22日目の記事です。

こんにちは。エムスリーエンジニアリンググループ、新卒2年目の青木です。 現在はクラウド電子カルテ「エムスリーデジカル 」でソフトウェアエンジニア兼チームSREをやったり、別チームで Windows アプリを作ったり CI 回したりしてます。

今回の記事では、業務の効率をあげるために今年作った小さなツールたちを紹介します(主にEmacsなのはご容赦を)。

  • 複雑な CSV(見出し無し)の扱いを効率化
    • > jp-medical-recept-reader.el
  • 単調なコピー作業をワンアクションで効率化
    • > cool-copy.el
  • コードリーディングを Virtual なコメントで効率化
    • > phantom-inline-comment.el
  • カーソル移動を履歴管理で効率化
    • > point-history.el
  • Slack での並列コミュニケーションを効率化
    • > SlackDeck-proto
  • GitLab での LGTM なコミュニケーションを効率化
    • > LGTM-Generator-from-Dropbox
  • おまけ
    • > mini-deck
  • We are hiring!!
続きを読む

機械学習パイプラインライブラリluigiのshell補完ツールを作った

こんにちは。Python謹製のshellを使って早3年、エムスリーエンジニアリングGの河合 (@vaaaaanquish) です。 この記事はエムスリー Advent Calendar 2019 の21日目の記事です。

エムスリー AIチームでは、機械学習パイプラインとして「luigi」及び、そのwrapperである「gokart」を利用した開発、運用を行なっています。 本記事は、エムスリーとluigiの繋がりと、私が作成したluigiのshell補完をサポートするmodule「luigi-completion」の概要、その使い方について示すものです。

f:id:vaaaaaanquish:20191216102634p:plain
luigi.readthedocs.ioより luigiロゴ

続きを読む