Home Page Icon
Home Page
Table of Contents for
Cover
Close
Cover
by David Gonzalez
Developing Microservices with Node.js
Developing Microservices with Node.js
Table of Contents
Developing Microservices with Node.js
Credits
About the Author
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Microservices Architecture
Need for microservices
Monolithic software
Microservices in the real world
Microservice-oriented architectures
How is it better?
Shortcomings
Key design principles
Business units, no components
Smart services, dumb communication pipes
Decentralization
Technology alignment
How small is too small?
Key benefits
Resilience
Scalability
Technology heterogeneity
Replaceability
Independence
Why is replaceability important?
Easy to deploy
SOA versus microservices
Why Node.js?
API aggregation
The future of Node.js
Summary
2. Microservices in Node.js – Seneca and PM2 Alternatives
Need for Node.js
Installing Node.js, npm, Seneca, and PM2
Learning npm
Our first program – Hello World
Node.js threading model
Modular organization best practices
Javascript
SOLID design principles
Seneca – a microservices framework
Inversion of control done right
Pattern matching in Seneca
Patrun – a pattern-matching library
Reusing patterns
Writing plugins
Web server integration
Seneca as Express middleware
Data storage
PM2 – a task runner for Node.js
Single-threaded applications and exceptions
Using PM2 – the industry-standard task runner
Summary
3. From the Monolith to Microservices
First, there was the monolith
How to tackle organic growth?
How abstract is too abstract?
Then the microservices appeared
Disadvantages
Splitting the monolith
Problems splitting the monolith – it is all about the data
Organizational alignment
Summary
4. Writing Your First Microservice in Node.js
Micromerce – the big picture
Product Manager – the two-faced core
Fetching products
Fetching by category
Fetching by ID
Adding a product
Removing a product
Editing a product
Wiring everything up
Integrating with Express – how to create a REST API
The e-mailer – a common problem
How to send e-mails
Defining the interface
Setting up Mandrill
Hands on – integrating Mandrill in your microservice
The fallback strategy
The order manager
Defining the microservice – how to gather non-local data
The order manager – the code
Calling remote services
Resilience over perfection
The UI – API aggregation
Need for frontend microservice
The code
Service degradation – when the failure is not a disaster
Circuit breakers
Seneca – a simple puzzle that makes our lives easier
Seneca and promises
Debugging
Summary
5. Security and Traceability
Infrastructure logical security
SSH – encrypting the communications
Application security
Common threats – how to be up to date
Injection
Input validation
Cross-site scripting
Output encoding
Cross-site request forgery
Open redirects
Effective code reviews
Traceability
Logging
Tracing requests
Auditing
HTTP codes
1xx – informational
2xx – success codes
3xx – redirection
4xx – client errors
5xx – server errors
Why HTTP codes matter in microservices
Summary
6. Testing and Documenting Node.js Microservices
Functional testing
The pyramid of automated testing
Unit tests
Integration tests
End-to-end tests
How much testing is too much?
Testing microservices in Node.js
Chai
BDD-style interfaces
Assertions interface
Mocha
Sinon.JS – a mocking framework
Testing a real microservice
TDD – Test-driven development
Unit testing
End-to-end testing
Manual testing – the necessary evil
Building a proxy to debug our microservices
Postman
Documenting microservices
Documenting APIs with Swagger
Generating a project from the Swagger definition
Summary
7. Monitoring Microservices
Monitoring services
Monitoring using PM2 and Keymetrics
Diagnosing problems
Monitoring application exceptions
Custom metrics
Simple metric
Counter
Average calculated values
Simian Army – the active monitoring from Spotify
Throughput and performance degradation
Summary
8. Deploying Microservices
Concepts in software deployment
Continuous integration
Continuous delivery
Deployments with PM2
PM2 – ecosystems
Deploying microservices with PM2
Configuring the server
Docker – a container for software delivery
Setting up the container
Installing Docker
Choosing the image
Running the container
Installing the required software
Saving the changes
Deploying Node.js applications
Automating Docker container creation
Node.js event loop – easy to learn and hard to master
Clustering Node.js applications
Load balancing our application
Health check on NGINX
Passive health check
Active health check
Summary
Index
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Next
Next Chapter
Table of Contents
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset