We have tried technologies for self-healing and self-configuration autonomouse networks, that automatically bypass data-plane process.

virtual wire cable

Place one data-plane between 2 routers, and that data-plane functions as a bridge. Therefore, ARP and routing protocol groups are no longer required to be implemented.

--

--

ネットワークのパケット処理プログラミングを昔チームでやっていました。その当時工夫してやっていたことを簡単に紹介しようと思います。当時作っていたものの1つは、PGW/GGSNでした。これはLTEや3GのEPC(Evolved Packet Core)というモバイルコアを構成するものの1つで、端末から外部ネットワークに抜けていく時に通っていくものです。

https://github.com/mixigroup/mixi-pgw このソースコードはMITライセンスですが、依存でリンクすることになるソースコードのライセンスに留意して活用ください。

パケット処理は、トンネルのためのヘッダーのつけ外しです。コントロールプレーンでトンネルのIDや宛先を決めて、その状態をデータプレーンに持たせて、1パケットづつ処理していきます。14.8M lookup per second程度のREADとパケット処理が必要です。また、その最中にもコントロールプレーンでlookupするテーブルの書き換えが走ります。このテーブルのサイズとしても数万から数十万程度を性能を測るターゲットとしていました。

まずパケット処理のアーキテクチャとしてデザインの根底に考えたのは、2点です。(1)開発とテストがしやすいことと、(2)デプロイがしやすいことがそれにあたります。これは進化をしやすくするために必須であると考えます。

(1)開発とテストのしやすさ

データプレーンとコントロールプレーンが連携して動く必要があります。一方、データプレーンはDPDKなどを使い、またコントロールプレーンは単純なソケットプログラミングです。コントロールプレーンで受け取った変更要求に対して、データプレーンの更新を同期的に行う場合には悩みが発生します。

予備系を含めた複数系統のデータプレーン全てに対して変更が成功した場合に成功を応答するのか?という問題が生じます。

YESである場合には、全てのデータプレーンプロセスが動いて初めて成功になるので信頼性は下がる方向になります。全てのデータプレーンプロセスが正常に応答している必要があります。

NOである場合、ステートが同期されていないデータプレーンの存在を許すことになります。

またYES/NOどちらであったとしても、難しいところがあります。また、開発時はデータプレーンのモックを用意する必要があります。

この悩みを解決するために、データベースのレプリケーションの仕組みを活用した方式を考え、それを実装しました。普段使い慣れたMySQL系のデータベースのbinlogによるレプリケーションをデータプレーンのパケット書き換えを行うプロセスに組み込みました。

データベースのレプリケーションは、変更内容を順次バックアップサーバに送り同じ変更をすることで同一の内容を保とうとします。データプレーンのプロセス内にデータベースにあるトンネルに関する情報をメモリー内に全て保持し、mapとして処理することで高速にlookupを行うようにしました。

これは、同じデータプレーンのステートを持つプロセスを複数台同時運用しながらも、コントロールプレーンはデータベースを1つ書き換えれば良い状態を作ることができます。

開発時もコントロールプレーンはデータベースの更新のみに集中すれば良く、データプレーンのプロセスとは綺麗に分離されます。

データプレーンのテストについても、コントロールプレーンと独立してテストできるメリットが生まれました。

全てが幸せかというとそんなことはありません。

データベースのレプリケーションには、レプリケーション遅延というものがあります。同期的に動く設定をすれば遅延なく同じデータになりますが、書き込み性能が大きく落ちるので用途によりますがそのような設定をしないことが多いかと思います。

データベースを書き換えて成功を応答して、データプレーンにパケットが届くまでにレプリケーションが間に合ってない状況になるとデータプレーンにおいて不整合が発生します。

これを回避するための仕組みを持つ必要がありました。

そこで活用することにしたのが、GTP-Cにある、Private ExtensionというInformation Elementsの活用です。

--

--

5/12(木)に開催された『Vertical SaaS Study #1 アンドパッド,FiNC,ミクシィの新人若手エンジニア成長戦略』でミクシィの新卒技術研修について紹介したので、そのレポート記事です。

イベントの概要

ミダスキャピタル様が主催のMIDAS TECH STUDYがVertical SaaS Studyに名前を改め、記念すべき初回イベントとして新卒研修を題材に、アンドパッド様、FiNC様とミクシィの3社がそれぞれお話しました。

アーカイブ動画はこちらです!

他の2名のお話も簡単に紹介します。

圧倒的成長をしながら急拡大してる開発組織が新卒採用やってみた

アンドパッドの下司さんより、2023年の新卒採用に初チャレンジしたお話でした。全社のエンジニア数も順調に増加する中、どうして新卒採用を始めたのかというところから、求める人物像やジャッジの軸、育成のサポート体制まで詳しく紹介されていました。組織戦略部という組織があったり、CTO経験者が多数在籍しておりアドバイスが貰いやすい環境など、サポート体制が非常に手厚い印象でした。これから新卒採用を始める方だけではなく、採用や育成をより良くしたいと考えている方におすすめです!

組織戦略部については↓の記事がおすすめとのこと👀

プログラミング未経験の学生をエンジニアにしてきたノウハウを公開

FiNCの篠塚さんより、プログラミング未経験の学生を育成する研修の設計やOJTの進め方についてのお話でした。フェーズごとに数ヶ月実施の研修がいくつかあり、今回は最初のプログラミング未経験からの研修について紹介されていました。こちらも研修の内容だけではなく、サポートについて力を入れていて、メンター向けのガイドラインもあるとのことでした。また、未経験でも事前にプログラミングに興味があるかを測るために、論理パズルのような問題を出して判断しているところが興味深かったです。ガイドラインも論理パズルも内容がめちゃくちゃ気になりますね!

「新卒だけ」じゃない!学び直しを支えるミクシィの技術研修を紹介

こちらが私の発表になります。

--

--

こんにちは、DevRelのちはっぴー(@charlielog_ggg)です。

タイトルの通り、株式会社ミクシィは、SRE NEXT 2022にプラチナスポンサーとして協賛させていただくことになりました!本イベントは、5/14(土)と5/15(日)の二日間にわたって開催予定です。

この記事では、ミクシィがSRE NEXTに協賛する理由や、ミクシィから登壇する3名のセッションについてご紹介していきますっ。

「SRE NEXT 2022」とは?

SRE NEXT 2022の公式HPによるイベント紹介はこちら。

━━━

信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンスです。

同じくコミュニティベースのSRE勉強会である「SRE Lounge」のメンバーが中心となり運営・開催されます。 SRE NEXT 2022は「SRE DIVERSITY」をテーマとして掲げ、スタートアップから大企業まで幅広い業種・領域・フェーズでのSRE Practiceの実践を集約し、より多様なSREの実践が普及することを目指します。

引用元:https://sre-next.dev/2022/

━━━

SRE NEXTは日本初のSREをテーマにした大型カンファレンスで、実はミクシィ、前回(SRE NEXT 2020)もプラチナスポンサーとして協賛させていただきました👀

前回はオフライン開催となっており、実際に参加させていただいた際の様子をブログでもレポートしています。ちなみに、弊社からの登壇者2名のセッション動画もYouTubeにアーカイブされているので、よろしければぜひご覧ください!

▼SRE NEXT 2020 参加レポート
https://mixi-developers.mixi.co.jp/sre-next-2020-781010921c28

▼SRE NEXT 2020 セッション動画
https://www.youtube.com/channel/UChvqB_M4qllXCJOW9nNB-Cw/videos

なぜミクシィがSRE NEXTに協賛するのか

弊社では、2004年にサービスの提供を開始した「SNS mixi」に始まり、「モンスターストライク」や「家族アルバム みてね」など、さまざまな大規模サービスを、長きにわたって運営してきました。世界累計利用者数は、「モンスターストライク」が5,500万人(2021年4月時点)、「家族アルバム みてね」では1,000万人(2021年3月時点)を突破しています。

大袈裟な言い方をすると、SREが話題になるずっと前から、サービスの安定運用に心血を注いできたとも言えましょう・・👀

そんなミクシィがこれまでに培った、サービスの安定運用ノウハウを社外の方にも知っていただきたい。更に、SREの重要性を強く実感しているからこそ、日本のSREコミュニティを一緒に盛り上げていきたい!そんな思いで、SRE NEXTに協賛しています。

ミクシィグループからも3名登壇!

今年のミクシィグループからの登壇者は、こちらの3名です。

それぞれのセッション概要をご紹介していきます!

みてね事業部 SREグループマネージャー 清水

<タイトル>
「1,000万人以上が利用する「家族アルバム みてね」のSRE組織は4年間でどのように作られてきたのか」

<セッション概要>
「家族アルバム みてね」は2015年4月にサービスが開始されました。一方でSRE組織は2018年2月に作られました。SRE組織が現在に至るまでに、組織の規模がどのように変化してきたのか、目標設定や日々のタスク管理はどのように行なってきたのか、SREロールの採用活動はどのように工夫してきたのか、この4年の間に起きたことを振り返ります。

また、SRE組織を今後どのように進化させていきたいかの展望についてもお話しします。組織の課題に対する試行錯誤が何らかのヒントになれば幸いです。特にSREを新たに始めたい、立ち上げたいと考えている方に役立つ内容になればと思います。

開発本部 セキュリティ室 ソフトウェアエンジニア skaru

<タイトル>
「AWS/GCPにおけるセキュリティ監視の取り組み」

<セッション概要>
ミクシィでは多数のAWS/GCPのアカウントを運用しており、日々増え続けています。これらのクラウドサービスでは一つの設定ミスで深刻なセキュリティ事故が起きてしまうため、セキュリティ監視は必要不可欠です。

本セッションでは我々がどのように多数のアカウントについてセキュリティ監視を行なっているか、またどのように効率化しているかについてお話しいたします。

開発本部 CTO室 SREグループマネージャー 小池

<タイトル>
「新規ゲームのリリース(開発)前からのSRE活動」

<セッション概要>
SREといえば稼働中のサービスやWebアプリの可用性の向上を支える・目指すエンジニアとして知られています。

それでは、リリース(開発)前ではSRE として積極的にプロダクトに関わることはないのでしょうか?私はそうではないと考えます。リリース(開発)前であってもリリース後を見据えた可用性の高いサービスを目指す活動を通して可用性の向上を目指すことはできると考えています。

筆者が今まで新規ゲーム・サービスを設計・開発・運用をしてきた経験をもとに開発時にあらかじめ考慮するべきポイントを解説します。

最後に〜オンラインでのブース展示も行います〜

最後に、会期中はオンラインでのブース展示も行っております。

ミクシィのSREにまつわるクイズも鋭意計画中(ギフト券が当たるかも?!)なので、ぜひ展示ブースまで足を運んでみてください😚

SRE NEXT 2022は無料で参加できるので、事前登録もぜひ!
https://events.zoom.us/ev/AJ7YgHtvtNCuH5c8HPMXUDCgqww6xhFKCPFo3ebCCgGkUDiDeLcP_VF3iuaXpXwu2xXczb8

それでは、当日のイベントでお会いしましょう!!

--

--

エンジニアじゃ無いけど、エンジニアの会話を理解したいみなさんへ。

こんにちは、ミクシィDevRelのちはっぴー(@charlielog_ggg)と申します。

まず簡単に自己紹介をさせていただくと、私は元々高専の情報工学科出身で、電機メーカーでの品質管理職や、IT企業での採用広報職を経て、現在は社内エンジニア組織の活性化や社外に向けた技術ブランディング活動などを行う「DevRel」として働いています(※ミクシィDevRelグループのご紹介)。

この経歴からお気づきかもしれませんが、私にはエンジニアとしての実務経験がありません。プログラミングとも、高専卒業以来ほとんど関わりがない状態です。

そんな私が、ミクシィという、300名以上のエンジニアが在籍するIT企業のDevRelとして働いてみて思うこと。それは、

「エンジニアの会話内容難しぃぃぃ・・(遠い目)」

DevRelとしての仕事の多くはエンジニアに関わることで、技術ブランディング施策なども検討していく必要があります。そのため、直接プログラミングに関わることはなくとも、技術的な用語と接することは避けられない・・!

こんな私と同じように、採用人事や技術広報の方で「エンジニア経験はないけどエンジニアの会話をもっと理解したい」と考えている方は多いのではないでしょうか。

今日は、そんな方々が、更にもう一歩踏み込んでエンジニアの会話に入っていけるようになる(かもしれない)研修を受けてきたので、そちらの感想を綴っていこうと思います!

Google Cloud研修を受講した経緯

今回私が受講したのはGoogle Cloud研修です!

エンジニアと話していると、

  • GKE(ジーケーイー)
  • BigQuery(ビッグクエリ)
  • Cloud Build(クラウドビルド)
  • Lambda(ラムダ)
  • DynamoDB(ダイナモデービー)
  • S3(エススリー)

・・・など、多種多様なサービス名を耳にすると思います。

そして、なんとなく(確かGoogleかAWSのサービスだよな・・)と思いつつも、サービス名をいくら知ったところで、自分たちが実際に使うわけじゃないし、たくさんありすぎて判別がつかないし、、、、今は別にいいや(。-ω-。)ノ ・゚゚・。ポイッ

と、サービスの特徴を理解することを後回しにしてしまっていませんか?

何を隠そう、正に私がこんな状況⊱(* ڡ *)⊰

そんな時、同じDevRelの大先輩であるきたこじさんに「ちはっぴーさんも、新卒エンジニアの皆さんと一緒にGoogle Cloud研修受けます?w」とお誘いをいただき、ありがたく乗っからせていただくことにしました。

エンジニア未経験の方はもちろん、エンジニア同士であってもフロントエンドとインフラなど職域が違えば使う言語や触れる技術が違うので、お互いに何をやっているのか初手から完璧に理解することは難しいはずです。

ただ、上述したようなサービス群はさまざまな現場で使われており(もちろん人によって触れるサービスは違ってきますが‥)、なんとなく共通言語化している気がするので、知っていると色んな場面でエンジニアの会話を解像度高く理解できるようになる‥はず‥という希望を抱き、2022新卒エンジニアの皆さんと一緒に『Google Cloud研修』を受講してきました!

Google Cloud研修の内容

今回私が受講したのは、「Core Infrastructure コース(1日:初心者向け)」と、「Architecting with Google Compute Engine コース(3日間:中級者向け)」の計4日間です。各日、昼休憩を含む7〜8時間のボリュームで、2022/4/15(金)〜2022年4/20(水)期間に受講しました。

受講者(私)のレベル感

講義の感想を書いていく前に、(参考になるか分かりませんが)私のレベル感を記しておこうかと思います。思いつくままに書いてみましたが、ざっとこんな感じです。

  • 高専の情報工学科卒だが、卒業以来一度もプログラミングに触れていない
  • エンジニアとしての実務経験無し
  • コマンドもほとんど分からない(昔習ったけど完全に忘却の彼方・・)
  • githubは、技術記事のレビューでたまに使うので、ほんの少しだけ使えるカナ?
  • ここ2〜3年は技術広報としてエンジニアと会話する機会が多い
  • はてなブックマークのテクノロジー欄だけは日々チェックしている
  • この本(採用・人事担当者のためのITエンジニアリングの基本がわかる本 )の内容はある程度分かる
  • 技術的な用語やサービス名を聞いた時、その言葉が何を指しているかはなんとなく分かるが、どのような場面で活用されているかまではイメージが湧かない

Core Infrastructure コース

Google Cloud Fundamentals : Core Infrastructureは Google Cloud の概要をハンズオンを交えながら学習するトレーニングです。

Google Cloud にはどのようなプロダクトが存在するのかを網羅的に知り、自分のビジネスに役立つプロダクトを探すことができます。

参照:https://cloud-ace.jp/training_course/detail01/

まず、1日目〜4日目を通して「クイックラボ」という研修用のWEBサイトを使用しながら講義が進んでいきます。全ての講義資料もクイックラボから閲覧可能です。

また、クイックラボの中には、ラボと呼ばれるハンズオン用のワークスペースも用意されています。

このCore Infrastructureは初心者向けのコースで、Google Cloudの仕組みや使い方、提供しているさまざまなサービスの概要と特徴についての説明を受けます。

ハンズオンラボで実際に一部のサービスを起動しながら、Google Cloudの使い方をある程度マスターして3日間の中級コースに進んでいくような形でした。

このハンズオンラボの時間では、コマンドを打ったり、コードを書いたりする場面もあるのですが、手順は全てラボ内で説明されており、コピー&ペーストで完結するようになっているので、コマンド初心者の私でも安心して受講することができました。

<1日目について>
1日目の講座は、初心者向けとあって、IT業界にいて普段エンジニアの会話をチラチラ聞く機会がある(「データベース」とか「コンテナ」という単語について、意味や働きはそんなによくわかってないけど聞いたことはあるよ!くらいの)方であれば、事前知識のない初心者でも十分理解できる内容だったかと思います。

Architecting with Google Compute Engine コース

講義、デモ、ハンズオンラボを通して、ネットワーク、システム、アプリケーションサービスなどのインフラストラクチャコンポーネントを含む、ソリューションの各要素について学習し、演習を行います。

このコースでは、実践的なソリューションの実装も取り上げており、セキュリティを維持しながらネットワークを相互接続する方法や、ユーザー指定の暗号鍵、セキュリティとアクセス管理、割り当てと課金、リソース監視などについて学習します。

参照:https://cloud-ace.jp/training_course/detail03/

また、3日間のArchitecting with Google Compute Engine コースでは、1日目に学習した内容を復習したり、更に詳しく深堀りしたりしていきます。

ハンズオンの内容を一部抜粋すると、IAM(Identity and Access Management)と呼ばれるアクセス制御を行う機能を用いて、”ロール”と呼ばれるアクセス権限の設定を付与する方法や、付与したロールが適切に動作しているかを確認する方法を学んだり、Cloud Monitoringという監視用のサービスを使用して、Google Cloud で実行するアプリケーションの分析情報を取得する方法を学んだりしました。

<2–4日目について>
2日目からは、サービス説明にシステム構成図などの登場が増えてくるので(1日目のCore infraコースでも出てくるが少なめ)、初心者がいきなりArchitecting with Google Compute Engine コースを受講した場合は中々理解が大変そうだと感じました。

私同様、実務でGoogle Cloudを使うことは当分ないだろうという方は、ある程度網羅的にサービスの特徴について説明してくれる1日目のCore Infrastructureコースで十分かもしれません・・!

逆に、それぞれのサービスがどのような仕組みで動いているかという裏側をしっかり学習できるため、これからGoogle Cloudを使う予定の方には、Architecting with Google Compute Engine コースの受講が適しているのではないかと思います。

全体を通しての感想

これまでGoogle Cloudと聞いても、「うんうんクラウドの・・なんか・・よく使われているサービスだよね・・」くらいのざっくりとした認識しかなかったところを、ひとつひとつの機能やサービスについて改めて知る機会をいただけて本当によかったです。

今回の研修で少し辛かったところ。

  • ボタンやタブの名前に英語と日本語の説明が混ざっていて、何を指しているのか理解しづらい場面が割とあった
  • ラボのために与えられる時間が、完全な初心者にとっては若干短く感じる。コピペで終わらすこともできるが、きちんと理解しながら進めることを考えると時間が足りない気がした(おそらく今回は新卒技術研修に合わせたスケジュールになっていたため、仕方ない気もする)。

逆によかったところ。

  • 座学だけでなく、実際に手を動かしてGoogle Cloud上での操作方法を学ぶことができたので、具体的な動きのイメージを持つことができた
  • 講義資料やハンズオンの進め方を後から見返し、復習することができる
  • 手が止まったところがあれば、講師の方が一つずつ丁寧に説明してくれた

私はDevRelとして、エンジニアの登壇資料や執筆物に触れる機会が多いため、広報的な観点から「外に出していい内容か」「文章として正しいか」などを中心にエンジニアの執筆物や発表資料をチェックしてきましたが、今回の研修で学んだことは、もっと内容自体を楽しむための大きな手助けになってくれるのではないかと思います。

Google Cloud研修に関わらず、どこかでこのような技術研修を受けるチャンスが舞い込んできたら、きっと何か収穫を得られると思うので、ぜひ足を踏み入れてみてください。

それでは、最後まで読んでいただきありがとうございました!

--

--

mixi developers

ミクシィグループに所属の開発者による技術知見や開発ノウハウ、カンファレンスレポートなど、開発に関する情報を共有するエンジニア・ブログです。

Connect with mixi developers