What is microservices?
Microservices is an architectural style that structures an application as a collection of small autonomous services, modeled around a business domain
What are the main advantages of microservices?
What are the main disadvantages of microservices?
How small should be microservices?
What alternatives for microservices do we have?
- Modules
What general points can help you take a good architectural decision?
Should we use a shared database for microservices?
Pluses
- easy
Minuses
What is SOAP?
SOAP is an acronym for Simple Object Access Protocol. It is an XML-based messaging protocol for exchanging information among computers. SOAP is an application of the XML specification.
What are the main rules for creating good integration?
This means avoiding integration technology that dictates what technology stacks we can use to implement our
microservices. (Integration tools which works only in one env is not a good idea)
What does it mean ‘Cost of changes’?
This is how difficult to add new changes to the project.
What ways/tools you can use to build an integration between microservices?
What is Remote Procedure Calls? (RPC)
Remote procedure call refers to the technique of making a local call and having it execute on a remote service somewhere.
What is REST?
REpresentational State Transfer (REST)
What is RabbitMQ?
RabbitMQ is a messaging broker. It gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.
How to handle versioning?
What is concept of seam?
Seam — that is, a portion of the code that can be treated in isolation and worked on without impacting the rest of the codebase.
What is a compensating transaction?
A compensating transaction is a set of database operations that perform a logical undo of a failed transaction.
What is use a distributed transaction?
Solves transaction problem for microservices by 2 ways:
What is a two-phase commit?
2pc has two phases: A prepare phase and a commit phase. In the prepare phase, all microservices will be asked to prepare for some data change that could be done atomically. Once all microservices are prepared, the commit phase will ask all the microservices to make the actual changes. ( Check that all cases works, if yes -> commit)
What is SAGA pattern for distributed transactions?
The Saga pattern is asynchronous.
We send and events one by one. And we create a transaction for each event. If something can’t be createn during this step we send Error event and rollback already created data.
If any microservice fails to complete its local transaction, the other microservices will run compensation transactions to rollback the changes
What is Continuous integration? (CI)
Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. The CI process is comprised of automatic tools that assert the new code’s correctness before integration.
What is continuous deployment? (CD)
Continuous Deployment (CD) is a software release process that uses automated testing to validate if changes to a codebase are correct and stable for immediate autonomous deployment to a production environment.
What is continuous delivery? (CD)
Continuous Delivery is the ability to get changes of all types (new features, configuration changes, bug fixes) into production safely and quickly.
development -> fast tests -> slow tests -> UAT -> PROD
What is consumer-driven contract testing?
Consumer-driven contract testing is a way to formalize expectations into a contract between each Consumer-Provider pair. Once this contract is established, contract testing ensures, automatically, that the contract doesn’t break unexpectedly. ( Checks that we don’t break way of communication between services)