日本の未来のために何かを作る
子供がいますから。
2013年当時、Kubernetes(K8s)はまだ存在していなかったため、その必要性を感じ、PaaSを提案し開発を開始しました。その後、10年以上にわたり運営してまいりました。主な実績は以下の通りです。
また、さまざまなチームのお手伝いも行い、それぞれの技術スタックや作業スタイルに合わせて対応しました。さらに、研究型のプロジェクトにも多数携わってきました。
私はバックエンドに強みを持つゼネラリストであり、企業の基盤となるシステムの構築に自信を持っています。
PaaSのProof Of Conceptでは、最も効果的なロードバランサ(Haproxy)の自動生成に取り組みました。使用した技術は以下の通りです。
Haproxyを選んだ理由は以下の通りです:
チームが関心を示した後、次の段階に進みました。当時の研究や資料を参考に、最終的にK8sやAWSに類似したシステムを作成しました。ただし、分散システムのストレージには、etcdのようなCPシステムではなく、RIAK(AP)の使用を選択しました。それに伴い、データ管理にはCRDT(Conflict-free Replicated Data Type)に似た手法を用いました。
このシステムは初期段階でIaC(Infrastructure as Code)およびPaC(Platform as Code)を実現しており、設定ファイルはk8sのYAMLファイルのように、ドキュメントで示していました。オーケストレーションエンジンが具体的な設定ファイルに変換し、サービスごとにコードとして展開されました。
コンテナ管理はDockerに任せ、シンプルなシステムを維持しました。特にSDNは使用せず、Haproxyでポートバインディングを行いました。後にCalicoとの連携を検討しましたが、最終的にはその必要はありませんでした。
各コンテナには、Rustで開発したエージェントが実装され、ノードごとのClojureコントローラと連携してターゲットステートを達成しました。当初、コンテナエージェントはClojureで作成されていましたが、コンテナの数が増えるとメモリコストが大きくなり、Rustに移行しました。エージェントとノード間の連携にはCap'n'Protoを使用しました。フロントエンドはClojurescriptとReactで開発しました。
その後、インターンとして参加していたメンバーが社員としてフロントエンド開発を担当してくれ、APIゲートウェイを作成し、APIを通じて設定変更が行われるようになりました(使用技術:Java, Kotlin, Spring Boot, JavaScript)。
最近はアップデートしていませんが、私のブログにはこの時代のさまざまなノートがあります。
こちらからご覧いただけます。
今後、ブログの再開を考えております。
長い間は1−2人で開発してましたが最終的に、チームは以下のメンバーで構成されました:
私は新人のオンボーディングも担当しました。
また、いくつかのタスクフォースにも参加し、以下の取り組みを行いました:
このように、さまざまな領域での経験を活かし、システムの設計、開発、運用において多岐にわたる貢献を行ってまいりました。
社内PaaSのSDN部分を担当しました。
フロントエンドとバックエンドを開発し、CISCOおよびJuniperルーターと直接通信することで、VLAN設定やポート集約(およびその他の設定)を行いました。
フロントエンドは、SinatraとRubyを使用して提供されたシンプルなサーバーサイド生成のHTMLおよびCSSによるものでした。ルーターとの通信はTTYエミュレーションを通じて行われました。
研究者をサポートし、データ収集のためのプログラムの実装、シミュレーションの実行、データベース(MySQL)の管理を担当しました。
ある実験では、Androidのネットワークスタックをカスタマイズしました。具体的には、以下の作業を行いました:
その後、さまざまなネットワーク環境で動画をストリーミングしながら実験を実施しました。
また、NS2(TCL)およびNS3(C++)を使用して、複数の実験も実行しました。
MATLABと社内の数学ライブラリとの統合を実装し、CUDAおよびGPU機能を活用できるようにしました。
これには以下の作業が含まれていました:
残念ながら、これは16年前に行った作業のため、すべての詳細を覚えていません...
私は、当時「PIPS」と呼ばれていた自動プログラム変換ツールの中間表現(IR)とXMLとのマッピングを開発しました。これは、XSLT変換を通じて最適化のテストを行うために作成されました。
このプロジェクト詳細は公開されていません
機会に応じて
高い自律性の環境