Architecture

Steps in Architecting Solution Delivery and Maintenance Lifecycle

  1. Define the customer requirements for the solution.
  2. Design a great solution to meet those requirements.
  3. Implement the designed solution.
  4. Test the solution implementation.
  5. Validate the solution with the customer.
  6. Deliver the solution in the working environment.
  7. Maintain the solution afterward.

Fundamental constraints

  1. The solution needs to meet user requirements.
  2. The solution needs to be delivered on time.
  3. The solution needs to adhere to the project budget.
  4. The solution needs to deliver good quality.
  5. The solution needs to guarantee safe and effective future evolution.
English Article · Software

Sitecore XM to XM Cloud Content Migration

Agenda:

  1. Introduction
  2. What does this tool do?
  3. What does the tool look like?
  4. What ZIP file contain?
  5. Prerequisites
  6. Sitecore XM Migration GUI
  7. Sitecore XM Migration Console

Sitecore has lots of customers who developed their solution based on classic Sitecore OnPrem which exists in the market for 2 decades. Also, Sitecore released the XM Cloud, a fully SaaS solution in July 2022.

Lots of customers continue to use the OnPrem solutions, new customers prefer to use the SaaS version and of course, some would like to switch to it, but it requires lots of effort. Sitecore just released to the public a brand-new XM to XM Cloud Content Migration tool that assists in minimizing the account’s barriers to migrating to Composable DXP.

What does this tool do?

It helps migrate customers’ data from the source of the XM OnPrem instance to the XM Cloud account. It migrates the content, media, and internal users (but not custom site data at this moment).

Continue reading “Sitecore XM to XM Cloud Content Migration”
Uncategorized

Soft Skills – Building Trust

“Trust is like the air breathe – when it’s present, nobody really notices; when it’s absent, everybody notices.” – Warren Buffett

Trust is a risk. Big ambitions in life require collaboration and can’t do it alone. So to minimize the risk, people try really hard to gauge the trustworthiness of others.

Trustworthiness is evaluated on three primary criteria:

  1. Competency – when an absolute expert in a field.
  2. Empathy – when people see you as warm, caring, and understanding.
  3. Authenticity – when people perceive you as honest, transparent, genuine, and consistent.
Continue reading “Soft Skills – Building Trust”
Architecture

Event Driven Architecture – Full Guide

Agenda:

  1. Microservices Architecture
  2. Command and Query
  3. Event
  4. Event-Driven Architecture (EDA)
  5. Producer
  6. Channel
  7. Consumer
  8. Advantages of Event-Driven Architecture
  9. Orchestration and Choreography
  10. Event Sourcing Pattern
  11. CQRS Pattern
  12. When to use Event Sourcing and CQRS
  13. Stateless EDA
  14. Stateful EDA
  15. Event Streaming
  16. Correlation Id
  17. Mixing EDA with Request/Response
  18. Events as Source of Truth
  19. The Saga Pattern

1. Microservices Architecture

  • Based on loosely coupled services.
  • Each service is in its own process.
  • Lightweight communication protocols.
  • Polyglot – no platform dependency between services.

Replaces 2 legacy architectures as Monolith and SOA (Service Oriented Architecture).

The most important part in the EDA is the microservices communication. Which is dictated performance, and scalability. So the Event Driven Architecture handles the communication part.

Typical Microservices Architecture
Continue reading “Event Driven Architecture – Full Guide”
English Article · Software

Security in Sitecore Order Cloud and Access Token

The Sitecore Order Cloud is a rich and mature e-commerce engine.

It has a few must-know security related definitions:

  1. Security Profiles– a custom scope of the roles which can be assigned to the different levels: user, user group, buyer, seller, or supplier level.
  2. Roles – this is data access, which can be granularly assigned, for example, BuyerReader, BuyerAdmin, OrderAdmin, etc.:
The API Roles in Sitecore Order Cloud
Continue reading “Security in Sitecore Order Cloud and Access Token”
Architecture · Countries

Process Control

The most basic form of process control is called a feedback loop. For example, let’s imagine a heating vent and a thermostat where the goal is to provide a comfortable room temperature. A feedback loop has four basic components: 

  1. Sensor: monitors some important information (e.g. thermostat).
  2. Controller: logic (e.g. software).
  3. Actuator: the physical method of manipulationg the process (e.g. heating vent).
  4. Process: what you are trying to control (e.g. room).
Process Control Diagram.drawio.png
Feedback loop example where the temperature should be adjusted.
Continue reading “Process Control”
Architecture · Software

Event based architectural style

In this architectural style, the fundamental elements in the system are events. Events can be signals, user inputs, messages, or a data from other functions or programs. Events act as both indicators of change in the system and as triggers to functions. In this paradigm, functions take the form of event generators and event consumers. Event generators send events and event consumers receive and process these events. A function can be both an event generator and an event consumer. Event consumers are called implicitly based on event sent from event generators.

Event-based functions experience implicit invocation. The defining feature of implicit invocation is that functions are not in direct communication with each other. All communication between them is mediated by an event bus. We can think of the event bus as the connector between of all event generators and consumers in the system.

To achieve this structure, we first bind an event and an event consumer via the event bus. That is, each event consumer registers with the event bus to be notified of certain events. When the event bus detects an event, it distributes the event to all appropriate event consumers. When the event bus detects an event, it distributes the event to all appropriate event consumers. The observer design pattern manifests the event-based architectural style.

One way to implement the event bus is to structure the system to have a main loop that continually listens for events. When an event is detected, the loop calls all the functions bound to that event.

EventBasedComponentDiagram.png
Continue reading “Event based architectural style”
Architecture · Software

Pipes and Filters

Pipe and filter architecture, which is a type of data flow architecture. Data flow architecture considers a system as simply a series of transformation on sets of data. Data is transformed from one form to another using different types of operations. A pipe and filter architecture has independent entities called filters which perform transformations on data input they receive, and pipes, which serve as connectors for the stream of data being transformed. 

PIpeAndFiltersDiagram.png
THe Pipe and Filter diagram

The changes to the data are done sequentially from filter to filter. Each filter performs its local transformation on the data input it receives from the previous pipe and then it sends the output onto the next pipe.

Continue reading “Pipes and Filters”
Architecture · Software

State Transition Systems

  • State. The information that a system remembers defines its state. For example, a queue system can be in a number of different “states”: an empty state, a queued state, or a full state.
  • Transition. A transition is used to describe the change of a system from one state to another. A single system state can have multiple transitions; majority of systems today will have multiple transitions branching from one system state. This makes behaviors non-deterministic, since we cannot predict what the next state of the system will be.
  • Behavior. The behavior of a system describes what the system will do when exposed to a condition, which can vary from timed system events to user input.

State transition systems can be thought of as directed graphs. Each node of the graph represents the set of states, and each edge of the graph represents the set of transition. We can determine how a system reaches a specific state by simply traversing the graph.

State TransitionsSystemDiagram.png
State transition system for a queue

State transition systems can help us understand how parallel processing, multithreading, or distributed computing can affect the overall state of our system. Do we need to wait for another process to finish its work before continuing? At which junction of our system will we be bottlenecked?

In addition, state transition systems can help us identify deadlocks. A deadlock occurs when a process is waiting indefinitely for another to release a shared resource or complete its work. A state transition system can help you easily identify deadlocks since they occur if there is a condition that prevents a transition out of particular state.

Architecture · Software

Client Server n-Tier

Another name of the n-Tier is Multitier. Tiers often refer to components that are on different physical machines. The number of tiers varies quite a bit, 3- and 4-tier architectures are quite common, but any number is possible. So this architecture is called n-Tier or a Multitier.

The relationship between 2-Tiers in an n-Tier architecture is often a client/server relationship. The server side provides services. This could be storing information in a database, performing computation tasks, any sort of service. The client-side requests these services through messages. The communication between the two sides is called Request-Response. A tier can act as both a server and a client, simultaneously fulfilling the requests of its clients and making requests of its servers.

2-Tier Architecture (Client Tier and Data Tier):

nTierDiagram.png
2-Tier example.
Continue reading “Client Server n-Tier”