2019/06/19に見た記事等を雑に分類するだけ
- 設計
-
system-design-primer/README-ja.md at master · donnemartin/system-design-primer
- 大規模システムの設計を学ぶ
- システム設計面接課題に備える
- webpack
-
面倒なJavaScriptコードのとりまとめがこれ1つで可能に、「webpack」入門 | さくらのナレッジ
- webpack
- Webブラウザで複数のモジュールに分割されたJavaScriptプログラムを実行させたい場合、HTML内でscriptタグを使って必要なモジュールを個別にロードさせる必要があった
- このようにscriptタグを使ってJavaScriptをロードする場合、メンテナンス性が悪く、モジュール間の依存性の管理が必要になり、不具合が発生しやすい
- webpackはJavaScriptコードの結合やモジュール管理機構を実現するためのツールの1つ
- webpackの機能の中核はアセットバンドル
- 「CommonJS」や「AMD(Asynchronous Module Definition)」といったモジュール規格に沿って実装されたJavaScriptモジュールを適切に結合して1ファイルにまとめる機能
- 結合対象とするファイルを自動的かつ適切な順序で追加する
- JavaScriptだけでなくCSSや画像といったリソースを扱うことも可能
- インストール
- ディストリビューション公式パッケージマネージャ経由、またはnpm
- 前者は安定板が提供されているが、バージョンが古いことも多い
- そのため特に事情がない限りは、最新版が利用できるnpm経由のインストールを選択するとよい
- JavaScriptのバンドル処理を実行する
- webpackで出力したコードの冗長性は、minify設定により解消できる
- minifyとは、不要なスペースやインデントなどを削除したり、関数名や変数名を短いものに置き換えたりすることでソースコードのサイズを圧縮する処理のこと
- minifyしたソースコードは人間の目には読みにくくデバッグしにくい → SourceMap
- SourceMapはminifyしたソースコードとオリジナルのソースコードとの対応付けを定義したファイル
- Babel
- ECMAScript規格がアップデートされ続ける一方で、その新機能をサポートしないブラウザも存在する。
- そこで、新機能を使ったコードを、それをサポートしないWebブラウザで利用できるようなコードに変換するツールが登場している。
- その中でも有名なものがBabel
- TypeScriptで記述したコードをJavaScriptに変換してからバンドルできる
- CSSファイルの結合やminifyも可能
- マネジメント
-
- 安全な環境をつくる
- 心理的安全性が高い環境
- 日頃からメンバーに対し、承認の態度を示し続ける
- 弱さを共有する
- リーダーが率先して弱さを共有することで、メンバーも安心して自分の弱さを共有できる
- 共通の目標を持つ
- チームとして共通の目標(理念、価値観)があることで、細かいルールを定めずとも自分たちで考え判断し、行動することができる
- UI
-
- 使う色合いを決める
- 鮮やかさを統一する
- コントラストに気をつける
- ユニバーサルカラーについて考えてみる
- GitHub
- CircleCI
- AWS
-
20180220 AWS Black Belt Online Seminar - Amazon Container Services
- 13 of 51, 44 of 51の絵がわかりやすい
- コンテナのユースケース
- マイクロサービスアーキテクチャ
- 多数のマイクロサービスを同じ様に管理
- 非同期ジョブ実行 (バッチコンピューティング)
- ジョブのリクエストに応じた柔軟なスケール
- 継続的インテグレーション、継続的デプロイ(CI/CD)
- 開発〜テスト〜本番まで一貫したイメージを利用
- コンテナを利用した開発に必要な技術要素
- アプリのステートレス化
- ステートが必要なものはコンテナの外に置く
- 例: RDBMSが必要 → RDS
- 例: オブジェクトの保存 → S3
- レジストリ
- コンテナイメージの置き場所
- ECR
- コントロールプレーン / データプレーン
- コントロールプレーン
- コンテナの管理をする場所
- ECS
- EKS
- データプレーン
- 実際にコンテナが稼働する場所
- Fargate
- EC2
- CI/CDパイプライン
- アプリのコード変更〜コンテナのデプロイを管理する
- CodePipeline
- CodeBuild
- Amazon Container Services
- レジストリ
- ECR
- フルマネージドな高可用性・スケーラブルなレジストリ
- コントロールプレーン
- ECS
- Task Definitionの情報から起動される
- Task Definitionを新しくするとBlue/Greenデプロイ
- EKS
- データプレーン
- Fargate
- なぜCI/CDパイプラインが重要なのか
- 誰でも同じようにデプロイできる
- イメージがどうやって作られどこで使われているか把握
- アプリ毎に統一された手法を利用する
- Fargateを利用したコンテナAuto Scalingの優位性