Previously in part one, we discussed how pairing the cloud-first mentality of Cloud Native development with a flexible and developer friendly platform can help build a win-win for developers and businesses alike. By building Cloud Native Platforms, developers can quickly implement shared services and build applications, which means businesses can respond to changes more quickly. But, what are the problems we're trying to solve? And how do we build Cloud Native Platforms to solve those problems? In this post, we'll highlight some of today's development woes, and introduce some concepts that can help address them.
What Problems Do We See In the Industry?
Modern developers have to consider a dizzying array of concerns when building applications. Starting a project can be overwhelming, as you have to consider any number of things, such as architecture, security, automation, and service reliability. On the flip side, if the current architecture is too rigid, developers are pigeon-holed into building inadequate and inflexible solutions. But merely replacing one cumbersome specialized system with yet another is a Sisyphean task, as you’ll soon find yourself in the same place you started. Having to navigate tribal knowledge about “the way things are” makes collaborative and evolutionary architecture difficult. As these problems become ingrained into traditional platforms, a transformation is needed.
How Do We Fix It?
By building a platform that enables the cloud native mindset for developers, a Cloud Native Platform transforms how businesses deliver solutions. But, this isn’t something you can just buy off the shelf, it must be nurtured and grown. There are many tools available to choose from, but you also need to consider your business concerns, overall architecture, and developer experience. Rome wasn’t built in a day, and neither are platforms, but it is important to keep these goals in mind as you undergo your own digital transformations:
- Shared Services - Abstract architectural and business domain concerns into shared services with consistent APIs
- Self-Service - Build self-service tools for provisioning resources and services.
- Flexible - Give developers the freedom to implement custom solutions by providing different levels of abstraction in their environments.
- Polymorphic - Create polymorphic platform services that allow for alternative solutions with the same common interface.
- Bootstrapped - Provide tools that bootstrap projects quickly using best practices and shared libraries.
- Secure - Make security a breeze by developing security patterns that integrate across systems.
- Discoverable - Make it discoverable by creating routing, integration, and deployment tools that are centralized, searchable, and self-serviceable.
- Observable - Auto-configure observability tools that provide logging, metrics, and traceability.
- Collaborative - Provide a group communication tool (like Slack) and shared knowledge base for developers to transparently share resources, documentation and architectural discussions.
- Community - Foster a centralized code community where developers can collaborate on shared services and modular libraries.
Where Do We Go From Here?
Cloud-Based Development is the future of modern software design. But, successful cloud development is more than just choosing where to host your software, but rather about fostering an entire ecosystem that can evolve and grow to address whatever challenges a business may face. To nurture this ecosystem, you need a platform designed with the cloud in mind, a Cloud Native Platform.
Follow us on our own journey developing platforms @1904labs on twitter