05/03/2021

Microservices – how to better understand their function

Microservices is an architectural style that provides a highly maintainable, testable, loosely coupled collection of services that are independently deployable. It is based on Service-Oriented Architecture (SOA) which means a set of smaller parts communicating with each other.

 

In the process of building SOA from huge monolithic architecture, the greatest emphasis is on the functional decomposition of the system. Every service has to be rounded whole in terms of business process flows.

 

The granularity of the SOA is the level of decomposition of the system. It is not strictly defined, but project architects have to find a good balance between a couple of bigger services with easier communication between them or a number of smaller atomic services with complex communication.

 

When we talk about communication, two services have to talk using the same communication protocol in order to send and receive calls or messages correctly.  On the other hand, communication protocols are also not strictly defined which has to be used. The most popular protocols nowadays are REST, SOAP, RPC, messaging, …

 

Each microservice itself can be implemented in different technology (framework, language, DB,…) which causes a much more flexible technology stack. 

 

 

Monolithic based architecture

 

 

When we are talking about the advantages of monolithic architecture, we usually mention simplicity as the biggest one. Monolithic applications are easy to build, test and deploy. They are scaled horizontally in one direction by running multiple copies of the application behind the load balancer. Also, it is easy to implement AOP over the same code base such as logging, monitoring, configurations, … Components in a monolithic structure share the same memory which is much faster than in an SOA (extra time goes to communication)

Of course, monolithic architecture has its own disadvantages. Most important between them is strong links between entities. This is the biggest drawback as it affects application management, scaling, and continuous deployment (CI / CD). 

They also have problems with reliability. An error in any part of the system can cause the entire application to crash.

Code updates affect the entire application. For each and every update, the entire application must be deployed again, no matter how small is the change. An error in any part of the system, on the other hand, can cause the entire application to crash.

Technology stack in monolithic applications must be uniformed. Every change in technology often affects the whole system!

 

 

Microservices based applications

 

 

The biggest advantage of SOA is loose coupling. Parts of the system are poorly connected which makes them easily replaceable.

Scalability is the next big advantage.  Each part of the system (MS) can be scaled separately. Each part of the system (MS) can be updated separately without the need to stop the whole system and it is possible to use different technologies/programming languages ​​during the implementation.

When talking about disadvantages, we can mention complexity as a major problem in SOA. Due to the communication between services, the complexity is higher than in monolithic applications.

Team expertise also plays an important part because people have to know additional patterns/frameworks.

Once the system is divided into components, it is necessary to monitor multiple logs, interactions,… It is necessary to use adequate tools for testing and monitoring.

According to the SOA, data are persisted into multiple databases. This can lead to a much more complex data model than is the case in monolithic systems.

 

MS architecture – technologies, patterns, concepts

 

IDE (Integrated development environment) 

 

Platform: JDK

App framework: 

 

Build tool: 

 

Virtualization: 

 

Service discovery

 

 

For starters, some of the skills you should have:

  • excellent knowledge of Java (OOP)
  • good knowledge of Spring Boot 2 
  • good understanding of source control tools such as Git (Github, Bitbucket, or Gitlab)
  • experience with relational databases 
  • apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
  • a college degree that corresponds to the required vacancy and at least 2 years of working experience in Java
  • excellent verbal and written communication skills in English

We can give you a fair amount of great benefits such as:

  • remote work
  • flexible working hours, no overtime policy
  • challenging international projects
  • Private health insurance
  • we are offering an honest, supportive, and friendly working environment
  • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

 Feel free to apply for the job if you think we are a perfect match!

    For starters, some of the skills you should have:

    • understanding of OOP concepts
    • Knowledge of REST/JSON Web Services and back-office applications using the newest Microsoft stack of technologies including C#, ASP.NET/ASP.NET Core, WebAPI, T-SQL, SQL Server, Entity Framework
    • Good understanding of Javascript, HTML, CSS
    • Good knowledge of GIT
    • Apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
    • a college degree that corresponds to the required vacancy and at least 3 years of working experience for Medior/ at least 5 years for Senior
    • excellent verbal and written communication skills in English

    We can give you a fair amount of great benefits such as:

    • remote work
    • flexible working hours, no overtime policy
    • challenging international projects
    • Private health insurance
    • we are offering an honest, supportive, and friendly working environment
    • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

     Feel free to apply for the job if you think we are a perfect match!

      For starters, some of the skills you should have:

      • A background or qualification in computer science or digital design
      • 5+ years of coding and design experience
      • 2+ years of experience in React
      • understanding of SOLID principles
      • good knowledge of GIT
      • good knowledge of design patterns
      • Good knowledge of UI/UX common practices and standards
      • Webpack
      • SCSS
      • Unit and E2E tests 
      • Experience or motivation to work in Framer Motion

      We can give you a fair amount of great benefits such as:

      • remote work
      • flexible working hours, no overtime policy
      • challenging international projects
      • Private health insurance
      • we are offering an honest, supportive, and friendly working environment
      • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

       Feel free to apply for the job if you think we are a perfect match!

        Your skills are:

        • Angular 2+
        • Typescript
        • RxJS 
        • HTML5 
        • CSS3

        ...and you may have experience with:

        • Webpack 
        • SCSS, SASS 
        • Unit and E2E tests

        We can give you a fair amount of great benefits such as:

        • remote work
        • flexible working hours, no overtime policy
        • challenging international projects
        • Private health insurance
        • we are offering an honest, supportive, and friendly working environment
        • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

         Feel free to apply for the job if you think we are a perfect match!

          For starters, some of the skills you should have:

          • excellent knowledge of Java
          • knowledge of Spring Boot 2
          • know how to create automated workflows with Webpack, Gulp
          • good understanding of HTML5 and CSS3
          • good understanding of source control tools such as Git (Github, Bitbucket, or Gitlab)
          • experience with relational databases
          • experience working with microservices
          • AWS or another cloud provider (GCP, Azure, etc.)
          • experience working with Linux/Unix
          • proficiency in standards-compliant and cross-browser compatible code
          • apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
          • a college degree that corresponds to the required vacancy and at least 5 years of working experience in Java
          • excellent verbal and written communication skills in English

          We can give you a fair amount of great benefits such as:

          • remote work
          • flexible working hours, no overtime policy
          • challenging international projects
          • Private health insurance
          • we are offering an honest, supportive, and friendly working environment
          • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

           Feel free to apply for the job if you think we are a perfect match!

            For starters, some of the skills you should have:

            • good programming skills
            • familiarity with API Development (REST, Web API)
            • understanding of OOP concepts
            • a bachelor degree that corresponds to the required vacancy
            • strong proficiency in JavaScript, including DOM manipulation and the JavaScript object model
            • thorough understanding of React.js and its core principles
            • experience with popular React.js workflows (such as Redux)
            • familiarity with specifications of Typescript
            • experience with React Saga
            • good knowledge of HTML5 and CSS3

            We can give you a fair amount of great benefits such as:

            • remote work
            • flexible working hours, no overtime policy
            • challenging international projects
            • Private health insurance
            • we are offering an honest, supportive, and friendly working environment
            • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

             Feel free to apply for the job if you think we are a perfect match!