さくらインターネットの技術スタックをまとめてみた(2020年版)

この記事は [さくらインターネット Advent Calendar 2020](https://qiita.com/advent-calendar/2020/sakura) 4日目の記事です。

本記事をご覧のみなさまお久しぶりです。さくらインターネットの大久保です。
ふと気づいたら、[去年のアドベントカレンダーでゆるふわな趣味の記事](https://qiita.com/jh1vxw/items/11b00ecb1626ac8603b8) を書いてから、あっという間に1年が過ぎてました。

自分自身振り返ると、新型コロナの影響で働き方が大きく変わったのに加え、仕事上の役割も変化し、激動の1年間だったように思います。

# 下っぱエンジニアが突然マネジメントもやることになった話

さくらインターネットでは2020年7月に大きな組織変更がありました。自分は、2009年7月からちょうど11年間所属していた「研究所」を離れ、新たに発足した「クラウド事業本部」の副本部長を務めることとなりました。

当方の本部は、サービス企画・開発から、データセンター運用、お客さまサポート、マーケティングなどを含めた7つの部門、450名前後のメンバーから構成されており、当社全サービスに関する事業運営責任を担っています。

なお、本部長は [横田真俊 執行役員(@Wslash)](https://twitter.com/Wslash) が兼務していて、副本部長は[平村友美さん](https://tomomii.hatenablog.com/)と自分の2名体制です。どっちかというと、自分は技術寄りの領域を担当しています。とはいえ、自分自身はたいした技術力はないので、社内のいろんな **神エンジニアに助けてもらいながら** なんとかやってます😇

以前は下っぱエンジニアとして気楽に好きなことをやってきましたが、今年7月以降、中途・新卒採用、部門間調整、エンジニアのお悩み相談にのってみたり、各プロジェクトの技術支援などやってます。これまで経験したことのない業務に携わることができ、おかげさまで ~~毎日ばかみたいに楽しいです(笑)~~ **非常に充実した日々を過ごしています。**

ところで、7月に現在の役割に就いて最初にやったのが、テクニカルスキルマップの作成でした。エンジニアの採用活動や部門間で最適な人員配置の参考にするもので、現在の事業継続に必須のものをあらったものです(補足事項も参照ください [^1] [^2] [^3] [^4])。折角の機会なので、今回公開したいと思います！

# さくらインターネットの技術スタック(2020年版)

## 1. ファシリティ

データセンター設備の設計、構築、運用に必要となるものです。

- ファシリティソリューション, サービスに関する知識
  - ラック, 配電, 配線, エアフロー関連ソリューションなど

- 通信技術, 電気通信設備に関する知識
  - (保有を推奨する資格) 電気通信主任技術者, 工事担任者

- 電気設備に関する知識
  - (保有を推奨する資格) 電気主任技術者, 電気工事士

- 建築に関する知識
  - 建物強度, 配管など

- セキュリティ(防犯, 防災)に関する知識
  - セキュリティ, 防災設備, リスク管理など

- 施工計画, 工程管理, 労働安全衛生に関する知識

- エネルギーマネジメントに関する知識
  - (保有を推奨する資格) エネルギー管理士

- コストマネジメント, リソースマネジメントに関する知識
  - (保有を推奨する資格) ビジネス会計検定

## 2. ネットワークの基礎

インフラ開発、運用にあたって前提となるネットワークの基礎知識です。

- Ethernet

- IPv4/IPv6, TCP/IP

- インターネットの仕組み、基礎知識

- よく使われる基本的なプロトコルの動作や仕組みの把握
  - HTTP, TLS, SMTP, SSH, Telnet, FTP, NTP, DNS, SNMPなど

- ネットワークトラブルシューティング
  - Traceroute, Ping, tcpdumpなど

## 3. バックボーン

インターネットバックボーン、拠点間通信の設計、構築、運用に必要となるものです。

- IP Routing
  - VRRP
  - OSPF
  - BGP
  - MPLS(LDP, RSVP, L2Circuit)
  - IP-VPN

- DNSサーバ構築、運用
  - 権威サーバ, キャッシュサーバ

- 光伝送
  - 光トランシーバ
  - CWDM, DWDM

- 回線設計
  - ダークファイバ, 専用線, 広域イーサ

- 対外接続
  - ピアリング, トランジット接続

- インターネットの資源管理に関する知識
  - レジストリ, Whois, IRR

- ネットワークテスター
  - IXIA, Spirentなど

- ルーティングデーモン
  - FRR, GoBGPなど

## 4. サーバインフラ

IaaSの物理レイヤの設計、構築、運用に必要となるものです。

- 物理サーバ

- 仮想化技術
  - Xen, Linux KVM, Hyper-V, VMware vSphere/ESXi/vCenter

- サーバ収容ネットワーク
  - VLAN
  - VXLAN, QinQ に準じるID拡張方式
  - LAG, LACP, mLAG, Trill に準じるL2冗長化方式

- ストレージ
  - SSD, HDD, NVMe, iSCSIなど

- サーバOS
  - Linux, FreeBSD, Windows Serverなど

- プロビジョニングツール
  - Ansibleなど

- 監視システム
  - Zabbix, Prometheusなど

- Webサーバ
  - Apache, Nginxなど

## 5. プログラミング言語

サービス開発や維持、改善に必要な、社内で主に使われているプログラミング言語です。

- Shell Script
- Go
- Python
- Ruby
- C
- C++
- Perl
- PHP
- SQL
- JavaScript
- Java
- Scala

## 6. システム開発

チーム開発、大規模システム構築、品質担保の実現に必要となるものです。

- Git, GitHub
- Gitflow, GitHub flow などのブランチモデル開発
- テスト
- CI/CD

## 7. バックエンド

APIサーバや認証連携機能、マイクロサービスの設計、実装に必要となるものです。

- リレーショナルデータベース
  - MySQL, PostgreSQLなど

- NoSQL
  - MongoDB, Redisなど

- ログ収集、解析システム
  - Fluentd, 分散トレーシングなど

- メッセージキュー
  - RabbitMQ, Kafkaなど

- 分析基盤
  - Elasticsearchなど

- Webフレームワーク
  - Django, Ginなど

- API設計
  - OpenAPI, gRPCなど

- 認証機構、認証連携
  - Basic認証, Digest認証など
  - OAuth, OIDC, JWTなど

- コンテナ技術
  - Docker, Kubernetesなど

- システムアーキテクチャ設計
  - マイクロサービス
  - バッチ設計, 実装

## 8. フロントエンド

各種サービスのコントロールパネルの実装、簡易Webサイトの作成に必要となるものです。

- HTML
  - セマンティックマークアップ
  - アクセシビリティ

- CSS
  - AltCSS（Sass/Scss）

- JavaScript
  - TypeScript

- JSフレームワーク
  - Vue.js
  - React
  - Nuxt.js

## 9. デザイン

コーポレートサイトやランディングページの作成、新サービスのインターフェイスの設計、
ブランド戦略の立案に必要となる知識や思想です。

- UX
- UI
- Web
- ディレクション

## 10. セキュリティ

情報システムへの攻撃、防御手法や暗号技術など、安全なシステム構築に必要な知識です。

- 暗号技術の知識
  - 公開鍵認証基盤(PKI)
  - 共通鍵暗号
  - 公開鍵暗号
  - ハッシュ関数
  - 乱数生成

- Webサイト攻撃手法の知識
  - ブルートフォース
  - インジェクション
  - バッファオーバフロー
  - クロスサイト系(CSRF, XSS)
  - パストラバーサル

- ネットワーク攻撃手法の知識
  - DDoS
  - スプーフィング(MAC, ARP, IP)

- その他
  - CPU脆弱性
  - ソーシャルエンジニアリング

# エンジニア募集中です！

さくらインターネットの技術スタック、いかがでしたでしょうか？ **データセンター設備からアプリケーション開発まで、全て自社でやっている** ため、エンジニアリング業務に関してだけでもかなり幅広いかと思います。

ところで、以下URLにて当社中途採用の募集要項を掲出しています。現在、**ソフトウェア開発エンジニアとインフラエンジニア**を募集しています。

https://www.sakura.ad.jp/recruit/

少し寂しい話ではありますが、**クラウドインフラを自らの手でやれる会社** も日本国内には少なくなりつつありますよね。そんな中でさくらは頑張ってやってます。もし記載のキーワードに惹かれる部分がある方は、是非ご応募をお待ちしておりますｗ

[^1]: スキルマップについて補足: 職種ごとではなくカテゴリごとにまとめたものです。特定分野の知識だけでなく、その周辺スキルの習得を推奨しています。
[^2]: もちろん、技術スキルだけがあれば十分というわけではなく、例えば協調性、コミュニケーション、プレゼンスキル、会計の知識など、非技術的スキルも重視されます。ただ、今回それらはフォーカス外としています。
[^3]: 研究開発や新規に開発するサービス、既存システムのリファクタリングなどで、ここに書かれてない新技術を用いることもあります(新技術へのチャレンジを推奨しています)。
[^4]: 現時点では評価制度と結びつけてはいません。あくまでも全体を俯瞰するために作ったものとなります。