Self-Managed Commerce Deployment Solutions
Overview
Self-Managed Commerce is provided as source code. For many customers, a Self-Managed Commerce implementation project is essentially a software development project. Such customers implement Self-Managed Commerce custom code and have an implementation project team consisting of software developers, software testers, and DevOps engineers.
Typically the development and deployment of a Self-Managed Commerce solution requires the following:
- Local Development Environments. The developers on the implementation team will require workstations suitable for developing and testing Self-Managed Commerce code changes.
- Development Process and Tooling. You will require infrastructure to run Self-Managed Commerce builds and tests, and supporting services such as Git services, artifact repositories, and container respositories. You will also require tooling to deploy and update Self-Managed Commerce environments, including production and non-production environments.
- Non-Production Infrastructure You will require compute clusters to run Self-Managed Commerce services for non-production environments. Those services will also require relational databases and Java Message Service (JMS) services.
- Production Infrastructure You will require compute clusters to run Self-Managed Commerce services for production environments. Those services will also require relational databases and Java Message Service (JMS) services. This infrastructure is almost always separate from the non-production infrastrcture, and needs to be suitably scalabale and highly-available.
The following diagram illustrates an example of typical infrastructure and components that make up a Self-Managed Commerce continuous integration and deployment solution.
Additional Detail
More information about the purpose and use of the various deployment components is provided below.
Local Development Environments
The Self-Managed Commerce developers on the implementation team use a local development environment for developing and testing Self-Managed Commerce code and tools. For more information, see the Developer Environment section of the Getting Started Guide.
Development Process and Tooling
Your project will require tooling to integrate, build, test, and deploy the Self-Managed Commerce code changes that the implementation team will develop over time. We recommend to use container images for deploying Self-Managed Commerce. Assuming that your project will use container images, the required infrastructure will include the following:
- A Git source control system where you will host your copy of the
ep-commerce
source repository. - A Maven artifact repository that your Self-Managed Commerce developers and build system will use to obtain software artifacts.
- A continuous integration (CI) build system to run the Maven-based build and test jobs. This will output a set of container images.
- A private container image repository where the set of container images can be stored and managed.
- Tooling to deploy and configure Self-Managed Commerce container images.
- Infrastructure to run Self-Managed Commerce test environments.
For more information, see Development Process and Tooling.
Non-Production Infrastructure
The implementation team requires non-production environments to validate that the Self-Managed Commerce applications behave and perform as required. Infrastructure for Self-Managed Commerce non-production environments typically consists of the following:
- A relational database solution. A containerized-database may be suitable for some test environments.
- A supported Java Messaging Service (JMS) mesaging solution.
- A cluster or clusters where you can deploy Self-Managed Commerce service stacks for:
- Integration and quality assurance (QA) testing.
- Performance and scalability testing.
- User-acceptance testing.
- Tooling to collect, view and monitor application and system data. Such tools might include logging aggregators, application performance monitors, and monitoring solutions.
For more information, see Infrastructure Options.
Production Infrastructure
The implementation team prepares and deploys highly scalable and highly available infrastructure suitable for production workloads. Infrastructure for Self-Managed Commerce production environments consists of the following:
- A highly available and performant supported relational database solution.
- A supported Java Messaging Service (JMS) mesaging solution.
- A suitably performant and scalable cluster where you can deploy Self-Managed Commerce service stacks for:
- Creating and validating production product data. This is tyically referred to the authoring environment. (Optional)
- Serving production traffic. This is tyically referred to the live environment.
- Tooling to collect, view and monitor application and system data. Such tools might include logging aggregators, application performance monitors, and monitoring solutions.
For more information see Infrastructure Options.