At Xpirit, we believe that developing applications for the cloud is a new expertise that requires more than just a thorough understanding of cloud capabilities. You also need a specific way of working and a different mindset. It is essential to adopt the business perspective to see how organizations can achieve their goals by using the cloud as an enabler and an essential part of building software.
Looking at IT from a business perspective
Modern high-performing organizations make effective use of IT as part of doing and running their business. The created supporting software solutions require a fast time-to-market to be relevant for customers, companies and employees alike. Quick feedback from end-users and production systems enables an adaptive approach to evolve ideas and solutions to stay relevant. Looking at software solutions from the business perspective shows a couple of traits that define modern, competitive solutions:
- Be cost efficient
A solution should have mostly operational costs and no significant capital expenditures, such as initial investment in hardware. The resulting operating model has low upfront investments and scales the costs less than proportional to the solution’s use, growth, and success.
- Differentiate on business essentials
You want to focus on the differentiating parts of the solutions. Common functionality and cross-cutting concerns should be ready-to-use building blocks. The custom-built parts should be essential to business to justify development.
- Effective operations and maintenance
Automation makes software solutions effective in operation and easy to maintain. Achieving full automation eliminates any manual steps. It reduces the risk of human errors and speeds up development processes by avoiding the availability of people needed to perform actions.
- Enable autonomous teams
Teams combining business and IT want to be in control of the solutions they create and take full responsibility for building and running it. These decisions and actions also relate to infrastructure, hosting, deploying and releasing software. Self-service provisioning gives teams the ability to create all aspects and parts of the software solution on-demand at any time.
- Secure and compliant
Any solution must be secure and compliant by default. A solution architecture is designed with that in mind. The build and release process uses quality gates to automate security and compliance checks on every change of the solution.
- Provide business agility
Becoming agile means drastically reducing the time from idea to production and being able to adapt as fast as possible to opportunities and changing circumstances. Again, automation helps to maintain a high-quality state of the system, allowing a release of functionality at any given moment.
Cloud-native applications as the new norm
Cloud-native applications are a perfect fit for software solutions in modern organizations. They have the mentioned characteristics by making optimal use of cloud capabilities. A cloud-native application deeply integrates with managed platform services in the cloud. It leverages these as building blocks for common functionality to focus on the differentiating, custom-built parts.
Additionally, teams can create automated pipelines for building and releasing cloud-native applications utilizing the high degree of automation in the cloud. Based on the cloud’s pay-as-you-use model it becomes possible to take costs into consideration when architecting a cloud-native solution. The cloud also allows view the costs during operation, so teams can be in control of how much is spent on running and see the effects of scaling the applications.
The cloud allows on-demand provisioning of resources, a team can use this to automate the creation of environments. These environments can range from long lived in production to short lived during testing and even for training purposes. The cloud offers monitoring facilities to observe the application during operation and react to any incidents.
Cocreating business solutions
Creating business solutions using cloud-native applications should be a joint effort between business stakeholders, domain experts, the cloud engineers and developers. The people with technical roles in the team should acquire the necessary insights into the domain. A thorough understanding of the business and domain logic is essential to build a successful application. The business stakeholders and domain experts need to transfer that knowledge by working inside the same team.
Cloud-native applications allows everyone in the team to focus on those differentiating, often complex parts of a solution, as the less relevant parts take less time to create. Also, as the entire team gathers more knowledge, it can quickly iterate to include new features, refactor for maintainability, improve performance and stability and fix any issues.
Agile practices with DevOps and SRE
Given how a team can utilize the capabilities of the cloud to create cloud-native applications, it can adopt new practices and methodologies in their way of working. The applications align well with teams that practice DevOps, Site Reliability Engineering (SRE) and other agile practices, such as Scrum. The applications facilitate a blurring of the line between development and operations. The teams can both create and operate the applications in full control and autonomy. SRE becomes a matter of using the cloud for global availability and replication, self-healing capabilities and applying resiliency patterns.
Identity and Access Management (IAM)
Dealing with security, accounts and social identities in cloud solutions can be challenging. It is a complex and specific set of features that involves practically every corner of your application landscape. Strangely enough, IAM is not part of an application but is required nevertheless to offer authentication and authorization functionality. It is a cross-cutting concern and essential to enable creating secure cloud-native solutions easily. Yet, this is often overlooked when starting a transition to the cloud.
A modern organization needs a proper cloud identity platform with IAM facilities to provide secure access to its applications and data. It will allow Single Sign-on (SSO) to web applications for its employees, customers and other users, who no longer need multiple accounts to login. Also, a cloud identity platform gives control, insights and monitoring capabilities for identity lifecycle management.
Usually, companies already have an existing landscape of applications, where not all applications meet current business requirements or standards for software development. Such applications can be modernized to meet your ambition as a company. Application modernization means more than just lift-and-shift cloud migration. It is an ideal moment to choose an appropriate strategy for each application to be refactored, rehosted or rebuild on a new platform.
Our approach to determine the best strategy for modernization includes the following steps:
1. Identify current requirements, challenges and goals
2. Perform functional and technical decomposition of the current application(s)
3. Choose migration strategy per functional area and component
4. Define alignment of the new solution in future state architecture and application landscape
5. Design and develop new application parts as a cloud-native solution
Practice what you preach
From the very start Xpirit has been providing help to companies, teams and people who want to create modern solutions based on the Microsoft platform and development tooling with agile practices. The focus was mainly on consultancy and coaching around the software development process and using cloud technology, and only partly on building and implementing the solutions we advise on.
Early 2021 we decided that we should start offering additional services to our customers and help design and create cloud-native solutions and supporting capabilities. These services cover four areas:
1. Develop mission-critical applications: greenfield development of cloud-native solutions
2. Application modernization: migration of existing applications to become cloud-native
3. Establish cloud identity platform
4. Training and workshops to learn practices, patterns and skills for cloud-native development
Our services are geared towards helping customers solve business problems using modern, high-quality software designed and built using cloud-native technology. Our propositions are about people: skilled DevOps engineers that are experts in Microsoft Azure cloud technology, the .NET development platform and matching front-end technology. They can act as a team to build the solutions. Alternatively, they can augment existing teams in a leading role to provide cloud, DevOps and SRE knowledge to build the solution and train the team members while doing so. As a multi-disciplinary team, they create the new modernized, future-proof cloud-native solution from scratch or by modernizing existing ones. On top of this, we can help deliver a cloud identity platform using our experience and expertise to complement the creation of secure cloud-native solutions.
Let’s fly to the cloud
Xpirit is venturing into the cloud even more by providing services to design and create your business solutions with cloud technology. We would love to make you part of that flight into the cloud. Whether you are a customer or a new team member, we are passionate about building the best cloud-native solutions together with you. Reach out and join us for a journey into the future. You can contact us at firstname.lastname@example.org or email@example.com.
Authors Alex Thissen (CTO at Xpirit Cloud Native Software Development) & Loek Duys (Consultant at Xpirit Cloud Native Software Development).