Upgrade to Pro — share decks privately, control downloads, hide ads and more …

フルスタックエンジニアとしてゼロからサービスを作る時に考えていること

tanaka-yui
September 13, 2020

 フルスタックエンジニアとしてゼロからサービスを作る時に考えていること

・開発の各ポイントでどういう思想で設計・構築したか
・フルスタックエンジニアの視点でみたときの発想

などの話

tanaka-yui

September 13, 2020
Tweet

More Decks by tanaka-yui

Other Decks in Programming

Transcript

  1. 採用したもの インフラ 全てAWS。Terraformでコード化 • ECS Fargate • DynamoDB • RDS

    (MySQL) • AppSync • CloudFront • Elasticache(Redis) • Lambda • Pinpoint • Amplify • Cognito • Code Pipeline • Route53 など Androidアプリ Android Architecture Components を基本としたMVVM • ViewModel • LiveData • Room • coroutine-flow • retrofit2 • okhttp3 • groupie • threetenabp • glide • koin など サーバーサイド Golangでマイクロサービス • go-chi • grpc • gorm • cobra • zap • robfig/cron など Webフロント Nuxt.jsでBFF入れつつvuetify • Nuxt.js • TypeScript • tsconfig-paths • Vuetify • grpc_tools_node_protoc_ts • prettier • express など 要件定義 基本設計 詳細設計 PG
  2. インフラの概要 ECS Fargate ・・・ コンテナオーケストレーション DynamoDB ・・・ NoSQL のDB RDS(MySQL)・・・RDB

    CloudFront ・・・CDN ElastiCache ・・・インメモリキャッシュ Lambda  ・・・みんなよく使うと思うサーバーレス Amplify  ・・・スマホアプリなどを作るのに最適なAWSのいくつかのサービスをまとめ+それを使いやすくしたツールのセット AppSync ・・・GraphQLの マネージド(Amplifyの一貫にもなってる) Pinpoint  ・・・Push通知(Amplifyの一貫にもなってる) Cognito  ・・・認証基盤(Amplifyの一貫にもなってる) Route53  ・・・DNSサーバーとかドメイン管理。 要件定義 基本設計 詳細設計 PG
  3. インフラの概要 ECS Fargate を採用した理由 • インスタンスそのものを管理しなくていい → OSの脆弱性パッチ当てとかしなくていい • AWSの他サービスと親和性高い→EC2とか使ってても乗り換えが比較的容易

    • ECS Fargateのversion up の頻度はかなりゆっくりなのでversionの追従が楽 一人でやったのでとりあえずお手軽なのが嬉しい( ^ω^ ) 要件定義 基本設計 詳細設計 PG
  4. インフラの概要 ということで、ECS Fargateを採用しました。 また、そのあとのデプロイなども楽にするため、こんな感じのお手軽パイプライン組みました。 GitHub Action上で ・docker build ・ECR へ

    docker push Cloud Watch Eventで ECRを監視し、pushされたら CodePipeLine実行 buildステージは飛ばすように し、ECRからdockerイメージ を取得しdeploy 要件定義 基本設計 詳細設計 PG