Backend Engineerの学習ロードマップ(分野別)
ロードマップ概要¶
Backend Engineerとして習得すべき分野を階層構造で整理したもの。
各分野の解説¶
API Design & REST¶
HTTPメソッドの正しい使い方、ステータスコード、リソース設計、バージョニング。
GET /users → 一覧取得
POST /users → 作成
GET /users/{id} → 1件取得
PUT /users/{id} → 全体更新
PATCH /users/{id} → 部分更新
DELETE /users/{id} → 削除
知っておくべき: REST vs gRPC vs GraphQLのトレードオフ。
Databases¶
RDB(PostgreSQL/MySQL)とNoSQL(MongoDB/Redis/DynamoDB)の使い分け。
| 用途 | 適したDB |
|---|---|
| 構造化データ、トランザクション | PostgreSQL |
| キャッシュ、セッション | Redis |
| 大量の非構造化データ | MongoDB |
| サーバーレス・フルマネージド | DynamoDB |
Authentication & Authorization¶
認証(誰か?): - JWT(ステートレス、マイクロサービス向け) - Session Cookie(ステートフル、シンプル) - OAuth2 / OIDC(外部IDプロバイダー連携)
認可(何ができるか?): - RBAC(Role-Based Access Control): ロールで権限管理 - ABAC(Attribute-Based Access Control): 属性ベースのきめ細かい制御
Background Jobs & Queues¶
時間がかかる処理(メール送信、画像処理)を非同期で行う。
ツール: Sidekiq(Ruby)、Celery(Python)、Bull(Node.js)、Asynq(Go)、Kafka
Docker & CI/CD¶
Docker: アプリを環境ごと固める。「自分のマシンでは動く」問題を解決。 CI/CD: コードをpushするとテスト→ビルド→デプロイが自動で走る。
# GitHub Actions の基本例
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: go test ./...
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- run: docker build -t myapp .
- run: kubectl apply -f k8s/
Cloud(AWS / Azure / GCP)¶
まず覚えるAWSサービス: - EC2 / ECS / EKS: コンピュート - RDS / DynamoDB: データベース - S3: オブジェクトストレージ - SQS / SNS: メッセージング - ALB: ロードバランサー - CloudWatch: 監視
学習の進め方¶
- REST APIの基本 + PostgreSQL でCRUDアプリを作る
- Docker化してdocker-composeで動かす
- GitHub Actionsでテストを自動化
- AWS(EC2 or ECS)にデプロイする
- 徐々に認証・キュー・監視を追加
ひとつのアプリを「動くものを作りながら育てる」のが最も効率的。