Smartstore as Modules & Microservices Architecture
Monday, January 6, 2020

Smartstore as Modules & Microservices Architecture

Microservices represent an architecture pattern in information technology, which assembles a complex application software from several independent processes, communicating with each other with language-independent programming interfaces. In addition, the services are largely decoupled and always perform a small task. This enables a modular structure of the application software.

If you are dealing with the topic of "microservices architecture" in combination with Smartstore, the question of whether you and your business are eligible for a microservices architecture also plays a role. We think that this type of orchestration only makes sense if your business is of a certain size and complexity and you need to implement it online.

Microservices aim to make complex applications individually and more easily scalable, maintainable and expandable through decentralization (keyword: cloud) and maximization of autonomy. What is or would be difficult to manage as a monolith becomes more usable and adaptable through microservices. Each (micro-)service fulfils exactly one function in the sense of technical logic. The most important reasons for choosing microservices are: great complexity, high innovation requirements and also the need to make an application scalable and controllable.

An example: Smartstore provides you with the "MegaSearch" plugin to make your large assortment and product variety manageable. And if this type of search does not convince you, you can expand it as much as you like or, of course, exchange it for another solution available on the market or one you have developed yourself.

What defines the microservices architecture and do I need it?
Unlike a monolith, when using microservices many components work independently of each other. This architecture has several advantages:

  • Optimized organization: The function of each component is clearly separated from the tasks of other modules. This prevents overlapping and also improves the overall organization.
  • Decoupling: Autonomous units can be more easily reconfigured to adequately meet different requirements. In addition, you can quickly implement individual functions when they are urgently needed.
  • Good performance: Depending on how well microservices are structured and organized, good performance is also encouraged. This makes it possible, for example, to scale individual components in an isolated manner if required.
  • Fewer errors: There are limits between the individual microservices. And so errors are also limited to individual components.

Nevertheless, there are also some disadvantages to consider regarding microservices:

  • There is a greater operational effort: Since microservices are usually deployed independently of each other, the coordination effort also increases.
  • Consideration of cross-cutting issues: Of course, there are also cross-cutting requirements in all applications based on microservices. In order to meet these, either cross-sectional components must be created or increased effort must be accepted (for example in test phases).

Okay. I get that, but what's the deal with this monolithic architecture?
Monolith derives from ancient Greek and means something like (large) uniform stone. Such monolithic applications consist of a single unit where all functionalities are integrated. It is difficult to extend them with third-party systems, which has advantages but also some disadvantages:

The advantages within a monolithic application:

  • Easier handling of cross-cutting issues: In addition to their actual function, most applications have to fulfill a lot of higher-level tasks and regulations - e.g. with regard to safety functions or data protocols. Because everything runs via a single application, it is also easier to adapt the individual program parts to global guidelines.
  • Better performance: Program performance is often better due to shared memory access being faster than modular interprocess communication (IPC).
  • Less operational effort: If there is only one application, only this one needs to be tested, controlled and maintained. Deployment is also less complex.

However, there are also disadvantages to these advantages:

  • High complexity: Monolithic programs are often difficult to understand and manage, as many functions have dependencies and side effects.
  • Tight interdependence: The individual program parts are tightly connected. The further the development of the application progresses, the more complicated and time-consuming it becomes to isolate individual parts of it, for example to scale them separately or to maintain the code.
Understood, is Smartstore now a microservices-based solution?
First and foremost, Smartstore is a so-called open source application. However, at this point one can also speak of a Modular Monolithic Architecture using Microservices. In this context, individual services or plug-ins can certainly be considered microservices. So if you use the Smartstore Enterprise Commerce Open Source Edition provided by us, you can definitely use microservices-based services and, if necessary, extend them as desired. In addition, we offer middleware for fast and smooth integration of external systems to reduce costs and development time. Please read our blog post: Smartstore ETL, your autopilot for data warehousing according to ISO 9001,

All right. So Smartstore is not a monolithic application because of its architecture alone?
No, it most certainly is not. From the very beginning, Smartstore has been modularly designed to provide you with unlimited scalability, agility and flexibility.

Can I convert Smartstore in conjunction with Visual Studio into a 100% microservices based solution?
Absolutely! And that's exactly the approach we take with our "Smartstore Enterprise Commerce Open Source Edition", also known as "Smartstore Enterprise Commerce OS" in short. It allows you to map and implement all business processes in your company. If you want to design your commerce processes in a modular and variably compatible way, Smartstore Enterprise Commerce OS will meet your needs: You can use it exactly where you were unable to do so in the past - perhaps because of component licensing, proprietary solutions or the monolithic approach. This makes it easier for you to develop new, necessary ways to use the data and services of your application - whether it is inside or outside your company.

An example: Since Smartstore is developed as a . NET software using Visual Studio, it is easy to integrate existing microservices, such as one of the Cognitive Services from Microsoft Azure, into Smartstore using NuGet packages. Download the desired package in Visual Studio with just a few clicks and integrate it into your project without any effort.

Due to the open and modular architecture of the Smartstore platform, it is possible to integrate microservices and to make extensions or changes without modifying the program core. This way, changes to the code are preserved for future updates.

Does this mean that Smartstore in combination with the Microsoft .NET Microservices architecture becomes a platform and infrastructure?
Yes, that is exactly the case. The options you get for your business processes in cooperation with Smartstore and Microsoft Azure Kubernetes Service (AKS) increase your chance to finally realize the more innovative business models you are striving for. And it doesn't matter whether you operate a classic online shop as B2B or B2C, or if you want to implement IoT applications, car commerce or voice commerce: With Microsoft Azure Cognitive Services you have access to even more microservices, such as speech recognition and comprehension, face recognition, emotion and video recognition, to name a few. In combination with Smartstore and Microsoft Azure, your possibilities are therefore almost limitless.

Ready to get started?
Write to us or try Smartstore for free. Contact sales:
Leave your comment