NodeJS #7
Practice time
$ whoami
Inna Ivashchuk
Senior Software Engineer
JS developer, music fan, movie-dependent and Star Wars fan 🤓
May the Force be with you!


Agenda
-
Nowadays development process
-
Practice time
Nowadays development process

Docker
+
Web Development in 2021
Nowadays SDLC with CI/CD, containers, orchestration and clouds






Working in a Team

Version System Control (VSC)

Would be good to know:
- How to use Git
- How to create a Pull request
- What is Code review

Pull Requests
How to push your local changes to a team's repository?

# fist - create a new branch
$ git checkout -b feat-my-new-user-form-and-ctrl
# next - commit your changes
$ git commit -m "feat(app): user form and controller"
# next - push your branch with changes
$ git push origin HEAD
# next - create a PR using GitHub
# next - request Code review
# final - merge your changes into main/master branch
Code review
Teammates will do a code review and can suggest how to improve your code, optimize solution or make it simpler

CI/CD
What is CI/CD?

Continuous Integration
build
checks
developer
artifact

CI
VCS
(Docker image)



- set up the environment
- install required dependencies
CI: preparation

Code checks using TS Lint:
CI: checks

- code styles
- typos
- missing symbols
- etc

CI: tests
Write and run tests is always a good idea


Time to build our application:
CI: build

CD vs CD

Continuous Delivery/Deployment
artifact
CD



dev
production
(docker image)


Continuous Integration + Continuous Delivery || Continuous Deployment

CI/CD pipeline

The most popular tools






Docker
The possible situation on a new project


Requested changes
Use new API for authentication
Login
What should be done to apply changes?
- install all backend related stuff locally (Java, Gradle, Maven, Mongo, PostgreSQL and etc)
- do changes in JavaScript files
- test your changes locally with backend API
- finally - commit changes

What can happen next
- Changes deployed/published
- QAs do validation, but your change is not working correctly

How it can be done
- Install Docker
- Pull Docker images with latest version of backend API
- Run it locally
- Apply and test your changes
- Profit 🤩

It's how Docker was born


Cloud Providers and Containers





Deploy
Deploy
Deploy
Deploy
About Docker
Docker is an open platform for developing, shipping, and running applications.
- enables you to separate your applications from your infrastructure so you can deliver software quickly
- you can manage your infrastructure in the same ways you manage your applications
- you can shipping, testing, and deploying code quickly
- you can significantly reduce the delay between writing code and running it in production

Practice time
Our mission
-
Continue working on an online coffee shop “Cold Brew”:
-
Server: MongoDB + Express + NodeJS ( + bonus Docker)
-
UI: React + CSS
-

Quiz Time

Q & A

Homework
-
Continue working in the tutorial6 directory
-
Create frontend part of your app using React + CSS + Formik (optional)
-
Connect your UI (frontend) part with backend
-
Try to use API endpoints from UI
-
Finally - result :)

Helpful souces

- My repository with NodeJS tutorials
- official Express documentation
- and of course Stackoverflow
NodeJS Core #7
By Inna Ivashchuk
NodeJS Core #7
- 492