The rapid acceleration of enterprise digital transformation leaves no margin for error as enterprise organizations look to remain competitive in an increasingly global marketplace and seek secure, mobile, digital services with uncompromising reliability. 5G, IoT and edge computing have arrived – yes, providing exciting opportunities – but fully monetizing these technologies will require service providers to move beyond basic connectivity.
This new pace of market opportunity is pushing service providers to introduce and scale advanced services faster than ever. Still, today’s manual methods are painfully slow, mind-numbingly rote and often prone to errors that lead to poor service quality, brownouts and even service failure. This doesn’t provide a good user experience, especially when a competitive, fickle marketplace suggests that improving customer loyalty will be required for service provider success.
The status quo offers little room for inspiration to improve existing network services or make them more efficient, much less to try completely new ideas, which hinders service providers who yearn to be bolder, freer to experiment and more agile. Innovation calls for a reassessment of the current approach to service provisioning.
A Services-as-Code Paradigm Emerges
Service providers need a way to provision network services that is more agile, flexible and customizable while assuring the highest levels of resiliency and performance.
At Juniper Networks, we believe this is an area where a services-as-code approach can provide a much-needed solution. A services-as-code model will allow network operators to increase service agility, enable experimentation and increase profitability.
For inspiration, network operators should look no further than their own data centers. Many providers already use an infrastructure-as-code framework to deploy compute, with robust processes that ensure that all hardware and software elements are properly configured, verified as compliant and actively tested before production.
Now, Everything Starts with Code
It’s time to apply the infrastructure-as-code model to network services.
The services-as-code model follows the traditional continuous integration and continuous deployment (CI/CD) approach that DevOps teams use to create and iterate software quickly.
With services-as-code, models for different network services (typically in YANG) are created along with device, inventory and topology models, which are then stored in a versioned repository. Developers then write “code” (a service instance) in the form of a text file in a machine-readable data definition language, for example, YAML, that allows for machine-driven validation. Then, the code is transformed from one form (e.g., intent-based service instance) to another (network-oriented service instance and, ultimately, device configurations) using standard tools such as jQuery or Jinja2 templates. Of course, all of this work is scripted to allow for a much greater degree of automation in the process of going from service definition to service delivery in the network.
When instantiating a service, using this approach, it’s important to thoroughly check for functionality, conformance, compliance and to get the work peer-reviewed, like the unit test approach of software development. This allows developers to test the service instance virtually, in a lab for functionality and then for performance and scale, followed by limited rollout and field trial. Once the service instance has passed this system of checks and balances, it can be fully deployed into production.
Service designs can be quickly adapted for new requirements or optimized for evolving customer requirements. When a change is needed, the service instance from the repository is modified, retested and certified for use. If a bug is found, the change can be rolled back and the previous version re-applied. Updates to routers, switches and other network elements always go through the services-as-code process. Only on rare occasions will they be individually configured.
Now, developers can build new services with confidence and speed, backed by industrial-strength processes. The services-as-code framework brings both time-tested structure and discipline to service ideation, design and provisioning with the freedom of experimentation.
Discipline Frees, Not Restrains
Services-as-code unleashes creativity and innovation. Experimenting with new services becomes faster, easier and gives teams the insight to continuously advance and innovate (with a ‘freeing’ safety net that enables them to sustain the necessary high bar for user experiences).
This new framework pushes network engineers and operators to learn and develop new skills. It also frees teams from work that is monotonous and error-prone and instead empowers them to make meaningful contributions that drive business value. Ultimately, it removes the obstacles to delighting customers and makes DevOps teams’ jobs challenging, engaging and fun.
Yoda once said, “No! Try not! Do or do not; there is no try.”
However, we disagree. It’s in trying that we learn how to do.
A services-as-code approach to service design, development, provisioning and management is all about trying new things, seeing what works, what doesn’t and implementing the best ideas to create lasting customer value based on consistently great experiences. In doing so, customers will be happier, more likely to hang around and, of course, this means that the business can grow faster than ever before.
More Resources
Learn how Juniper Automation solutions transform business intent into an assured service experience.