コンテンツにスキップ

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

時間がかかる処理(メール送信、画像処理)を非同期で行う。

APIリクエスト → キューにジョブを積む → 即座にレスポンス返す
               Workerがキューから取り出して処理

ツール: 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: 監視

学習の進め方

  1. REST APIの基本 + PostgreSQL でCRUDアプリを作る
  2. Docker化してdocker-composeで動かす
  3. GitHub Actionsでテストを自動化
  4. AWS(EC2 or ECS)にデプロイする
  5. 徐々に認証・キュー・監視を追加

ひとつのアプリを「動くものを作りながら育てる」のが最も効率的。