Doguhan Uluca
Technical Fellow
Excella
😰
🤮
🤬
😱
😎
n-to-n Deployments
stack
Presentation
API
Business
Persistence
Best Practices
IDE
Patterns
Libraries
Testing
Angular
Express
Node
Mongo
VS Code
npm
GitHub
jasmine
TypeScript
CI
Docker
Angular
Angular Material
Angular Evergreen
angular-unit-test-helper
Fundamentals
duluca/minimal-nginx-web-server
Capable, reliable development platform
Well understood, great community
Express
body-parser
cors
morgan
passport
Fast, unopinionated, minimalist web framework for Node.js
Vast plugin eco-system
Node
TypeScript
duluca/minimal-node-web-server
duluca/minimal-node-build-env
Lightweight and efficient JavaScript runtime, using an event-driven, non-blocking I/O model
Runs everywhere
Mongo
mongodb
document-ts
Document-oriented database with dynamic JSON-like schemas
Mature, performant and capable
VS Code
Free, fast and extensible
TypeScript
Covers the
JavaScript Feature Gap
Credit: Anders Hejlsberg
npm
Cross-platform scripting platform
GitHub
Kanban support, enables GitHub Flow
Docker
Covers the Configuration Gap
Branch
Merge
Branch
Merge
Ship
.
Free and container-based
jasmine
Batteries included
Fast
Full-stack
[demo]
FROM
SETUP
COPY
CMD
FROM
Operating Environment
FROM
FROM
FROM
scratch
nginx
alpine
FROM
SETUP
Security
Dependencies
Operating Environment
Host OS
Docker
Runtime
Container
Web Server
App
FROM
SETUP
COPY
Security
Dependencies
Operating Environment
Compiled Code
Assets
FROM
SETUP
COPY
Security
Dependencies
Operating Environment
Compiled Code
Assets
Host OS
Docker
Runtime
Docker Image
Web Server
App Code
Host OS
Docker
Runtime
minimal-nginx-web-server
nginx
Angular
/dist
/usr/src/app
FROM
SETUP
COPY
CMD
Security
Dependencies
bit.ly/npmScriptsForDocker
.circleci/config.yml
.circleci/config.yml
FROM
jobs
build
deploy
.circleci/config.yml
FROM
build
env
steps
Docker
checkout
run
store build artifacts
store test results
FROM
FROM
FROM
as builder
as tester
COPY
from builder
CMD
copy end result
FROM
FROM
FROM
as builder
as tester
COPY
from builder
CMD
minimal-node-build-env
alpine-node-chromium
minimal-nginx-web-server
50+ Mb
200+ Mb
7 Mb
Execution
docker build -f Dockerfile.integration . -t lemon-mart
Local build
CI-x build
.circleci/config.yml
FROM
jobs
build
deploy
.circleci/config.yml
FROM
deploy
restore
steps
Build artifact
Sign in to container repo
Publish to repo
Trigger deployment
bit.ly/npmScriptsForAWS
npm run aws:fargate-release
heroku container:push web -a lemon-mart
gcloud beta run deploy --image lemon-mart
Google Cloud Run