Planning and researching for designing an architecture
When you're planning to create a module, deployable architecture, or deployable architecture stack, you need to research and come up with a plan for designing the architecture before creating the automation. Evaluating what exists and how your proposed solution fits into the current ecosystem of offerings, thoroughly planning the architecture around your business requirements, and determining what you plan to build and where you will share or publish the solution are all key parts of the planning phase.
Researching existing offerings and user needs
As part of the research phase you need to understand what's currently available and what business use cases and requirements you plan to solve.
Researching current offerings
Evaluate the currently available modules and deployable architectures from IBM Cloud® to determine whether other similar solutions exist or how much automation your team needs to develop. For example, if the existing architectures in the catalog can help build the solution you're planning, you might have to build only a single deployable architecture that you group into a stack with other existing deployable architectures to build the full solution. So, instead of building all of the pieces yourself, you can use existing deployable architectures. Similarly, if you're building a deployable architecture that is composed of modules, you can review the existing modules to identify any that you might want to use in your architecture.
You can explore existing modules and deployable architectures in the following locations:
terraform-ibm-modules
public GitHub org is the IBM Cloud Terraform modules project. This collection of Terraform modules follows best practices and simplifies the provisioning of IBM Cloud services and instances.- IBM Cloud module registry is a collection of assets that is separate from the IBM Cloud catalog and is governed and maintained by the process in the
terraform-ibm-modules
repository. Discover public modules that have been confirmed to work with deployable architectures for your customization and building needs. - IBM Cloud catalog includes generally available deployable architectures that are covered by the IBM Cloud terms and conditions.
- Community registry includes a collection of real world examples of coded industry solutions to jumpstart your building needs. This collection is maintained based on specifications in the originating Github repository that might change frequently or be discontinued at short notice.
Determining a viable reusable architecture pattern
The second part of the research phase is to understand the business requirements and use cases that the solution will be built to address and how you can build a viable, reusable pattern. Many of the existing architectures are based on customer use cases for digital transformation, application modernization, and more. Knowing which use cases you're meeting will help determine which technologies you choose to build your architecture.
Use the Well-Architected Framework and the Architecture Design Framework to plan and design the required components for the architecture. Follow the steps for Designing a cloud solution by using the Architecture Design Framework. The decisions that you make during this process for the requirements and components that will be used to build your architecture pattern will be the design for your development team to build the pattern.
Designing the architecture
Based on the decisions reached during the research phase, many teams start documenting the pattern by using a Word document where they can track changes and provide comments to collaborate on what the team plans to build.
As the plan for your architecture gets solidified, you can refer to the reference architecture template as a guide for documenting your pattern. This includes creating an architecture diagram, design requirements heatmap, and documenting requirements and the architecture decisions for the chosen components.
Next steps: Choosing what to create
It's important to understand the key differences between modules and types of deployable architectures to determine which you plan to create. The scope, coupling, whether it's deployable, and the purpose of your solution should all be taken into account. For guidance and use cases to help you decide what you plan to build, see How do I decide what kind of component to create.