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

 

 

We are looking for a Senior Blockchain Developer with 5+ years of experience who will join our team.

Your core skills are:

  • Proven experience as a Blockchain Developer, with a strong focus on JavaScript
  • Proficiency in JavaScript, including frameworks such as Node.js, React, or Angular
  • Solid understanding of blockchain concepts and cryptographic principles
  • Experience with smart contract development and deployment on platforms like Ethereum or Hyperledger
  • Extensive knowledge of Object-Oriented Programming (OOP), including principles, data structures, algorithms, and design patterns
  • Familiarity with Docker, Kubernetes, and cloud services to support modern application development and deployment
  • Demonstrable experience with software engineering tools such as Git for version control, Maven for build automation, and tools for unit and integration testing
  • Comfortable working within a Scrum Agile framework to deliver high-quality software in iterative cycles

Requirements:

  • Minimum of 5 years of relevant experience
  • Degree in Computer Science or a related field
  • Proficiency in English with excellent communication skills
  • Strong problem-solving and analytical abilities
  • Effective communication and presentation skills

What We Offer:

  • Remote work opportunities with flexible hours
  • No overtime policy
  • 25 vacation days annually to recharge and relax
  • Challenging international projects to expand your horizons
  • Private health insurance including regular medical check-ups
  • Supportive and friendly work environment that values honesty
  • Knowledge-sharing, transparent, and proactive communication within the team

If you’re ready to take on exciting challenges and grow your career with a supportive and innovative team, we’d love to hear from you!

    We are looking for a Senior Full Stack Developer with 5+ years of experience who will join our team.

    Your core skills are:

    • Excellent knowledge of Java and JavaScript programming language
    • Excellent knowledge of Spring, Spring Boot, Hibernate
    • Excellent knowledge of Angular or React
    • Proficiency in both relational (e.g., MySQL, PostgreSQL) and NoSQL databases (e.g., MongoDB)
    • Good understanding of Microservice architecture
    • Exposure to Docker, Kubernetes, and cloud services is beneficial (AWS or Azure)
    • Extensive OOP knowledge - principles, data structures, algorithms, and patterns
    • Demonstrable experience building modern software using engineering tools such as Git, Maven, unit testing, and integration testing tools
    • Experience working in Scrum Agile methodology

    Requirements:

    • A minimum of 5 years of relevant experience
    • Degree in Computer Science or other relevant field
    • Excellent verbal and written communication skills in English
    • Strong problem-solving and analytical skills
    • Effective communication and presentation skills (written and verbal)

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

    • Remote work opportunities with flexible hours
    • No overtime policy
    • 25 vacation days annually to recharge and relax
    • Challenging international projects to expand your horizons
    • Private health insurance including regular medical check-ups
    • Supportive and friendly work environment that values honesty
    • Knowledge-sharing, transparent, and proactive communication within the team

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

      We are looking for a Senior iOS Developer with 5+ years of experience who will join our team.

      Your core skills are:

      • Excellent knowledge of iOS SDK (Objective-C and Swift) and XCode
      • Extensive OOP knowledge - principles, data structures, algorithms, and patterns
      • Demonstrable experience building modern software using engineering tools such as Git, Maven, unit testing, and integration testing tools
      • Experience working in Scrum Agile methodology
      • It would be beneficial to have experience with Android and Flutter

      Requirements:

      • A minimum of 5 years of relevant experience
      • Degree in Computer Science or other relevant field
      • Excellent verbal and written communication skills in English
      • Strong problem-solving and analytical skills
      • Effective communication and presentation skills (written and verbal)

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

      • Remote work opportunities with flexible hours
      • No overtime policy
      • 25 vacation days annually to recharge and relax
      • Challenging international projects to expand your horizons
      • Private health insurance including regular medical check-ups
      • Supportive and friendly work environment that values honesty
      • Knowledge-sharing, transparent, and proactive communication within the team

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

        We are looking for a Senior .NET Developer with 5+ years of experience who will join our team.

        Your core skills are:

        • Excellent knowledge of .NET (.NET Core and ASP.NET)
        • Excellent knowledge of SQL server
        • Good knowledge of JavaScript and frameworks such as React and Angular
        • Good understanding of Microservice architecture
        • Extensive OOP knowledge - principles, data structures, algorithms, and patterns
        • Exposure to Docker, Kubernetes, and cloud services is beneficial
        • Demonstrable experience building modern software using engineering tools such as Git, Maven, unit testing, and integration testing tools
        • Experience working in Scrum Agile methodology

        Requirements:

        • A minimum of 5 years of relevant experience
        • Degree in Computer Science or other relevant field
        • Excellent verbal and written communication skills in English
        • Strong problem-solving and analytical skills
        • Effective communication and presentation skills (written and verbal)

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

        • Remote work opportunities with flexible hours
        • No overtime policy
        • 25 vacation days annually to recharge and relax
        • Challenging international projects to expand your horizons
        • Private health insurance including regular medical check-ups
        • Supportive and friendly work environment that values honesty
        • Knowledge-sharing, transparent, and proactive communication within the team

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