As technology evolves rapidly, businesses must stay ahead of the curve to remain competitive. In the realm of IT development and infrastructure, several emerging trends are transforming the way organisations operate. From faster compliance processes to automated testing and code generation tools, new advancements are streamlining workflows and improving efficiency. In this article, we'll look at some of these exciting tech trends and explore their potential impact on businesses.
2023 is set to pave the way for faster, more reliable, automated compliance within application development and IT infrastructure. Compliance as Code is a critical development in this area, enabling both infrastructure and applications to respond to certain rules (and if they don't, ensure the anomalies are explainable).
Compliance as Code enables organisations to easily define their policies in a single code format, ensuring that all systems comply with industry and organisational standards. This helps ensure that any changes made adhere to said policies and regulations - protecting the organisation from liability or fines due to non-compliance. This trend is expected to grow over time, as Compliance as Code allows companies to manage their system and application configurations quickly and accurately.
With cloud computing, SRE, and easy access to SaaS, development has dramatically changed. Some of the application's features have moved to SaaS, and even basic applications now look like mini systems where cloud services have a foundational part. Authentication, user management, security, log management, API handling, and more are not being redeveloped but are part of the components provided to developers.
As such, the distinction between infrastructure, operations, and application is quickly disappearing, and Compliance as Code is the perfect tool to ensure the integrity of the whole system. It can be using different systems. For instance, we're using OPA to validate certain aspects of the application; TerraTest or Kitchen for Terraform code; quality gates in the DevSecOps pipeline to ensure the right test coverage, correct API authentication and security, etc.
Compared to how compliance was done in the past (usually with a checklist), one of the most exciting features of Compliance as Code is the continuous aspect: code (either app code or Infrastructure as Code) is validated on the fly before it gets to production. And it does not stop there: once in production, continuous tests are run in case compliance requirements change (and they do, as new vulnerabilities are found in existing systems). More traditional approaches generally revolve around time-based audits or are performed as part of significant changes or updates. This can often lead to a false sense of security – just because something met requirements when it was last changed or was last audited doesn’t mean it meets them today or will meet them tomorrow. This is where the continuous aspect of CaC can lead to increased confidence – compliance can be checked at any point and even automated on both new and existing systems and applications, using a consolidated tool and set of policies across relevant business units.
Compliance as Code can help companies stay ahead of the game when it comes to compliance – making sure that all departments are following the same standards and regulations, using the same tools and shared policy definitions, ensuring deviations are explained, and helping create a unified approach for organisations that have multiple departments or locations around the world.
If it's not the case yet, you should start researching and implementing Compliance as Code - its implementation in 2023 will be significant relief for developers, auditors, and IT professionals who seek an easier way to manage their systems. Compliance as Code promises faster, more reliable automated compliance within application development and IT infrastructure - allowing companies to spend less time on compliance-related tasks, freeing up time for other projects or initiatives.
"The best part of my job is to wait days for approval to put a benign change in production!" said nobody ever. At the same time, we all have stories (some of which are published in newspapers) about benign changes in production that crash entire systems. So how can you benefit from quick releases yet avoid costly mistakes?
In a study conducted by Forrester, it was found that automated testing could save a company $10.5 million over three years! This figure is a combination of time saved, increased developer output, fewer bugs, improved code quality and reduced risk of major mainframe defects.
By automating tests, you can identify the effects of any change before it reaches production. If you can click it, you can automate it! And with Blast Radius Calculation, you can get accurate information about how changes may affect other components or services.
How does blast radius work? Imagine you need to make a change in a cloud infrastructure. This change consists of creating a Virtual Machine and a Virtual Network. The blast radius would be small, as it's unlikely to affect production. But if you modify an existing Virtual Network or remove a VM, it's a different impact. It might require either further automated tests or a second pair of eyes before it goes to production.
The same idea can be applied to application development, database queries (ever forgot a where clause?), a new API endpoint (did you apply AuthC and AuthZ middleware correctly?), and other areas: you can either run automated tests or analyse the code, get a blast radius of your changes, and be sure that nothing is going to break. Managing the risk of deployments in production has always been a headache on large, complex systems. However, filtering out mistakes and getting automated approval is now getting simpler.
inAutomated Testing and Blast Radius Calculation will grow quickly in 2023, and we expect more adoption in these areas. So, if you don't want to wait days for approval or hear stories about production crashes, this is an efficient way to ensure we can catch and reduce mistakes before they hit production.
In 2023 we expect more widespread adoption of these technologies because they will enable faster and yet, safer development cycles while increasing reliability. Have your cake and eat it too! So be prepared to see automated testing, automated approvals, and Blast Radius Calculations become part of your daily life as a developer, PO, or manager. We assure you that no one will miss those days waiting for approval before deploying a change!
Gone are the days of code generators that produce low-quality code and leave developers to do all the work. Instead, code generator tools like GitHub's Copilot, whose popularity we expect to grow further in 2023, have revolutionised development by providing high-quality generated code that makes it easier for developers to create applications faster and with fewer headaches. Code generators have taken the busywork out of development, meaning developers can focus their time and energy on more critical tasks and specific features of their applications.
The increased efficiency provided by code generator tools cannot replace the value of a human developer. Code generators cannot interpret and act upon the nuances of user experience and interface design, which requires a level of creativity that can only be achieved with human insight.
Code generators also don’t consider optimisation techniques and best practices for the technology stack the application is running on. Furthermore, code generators don’t offer advanced debugging capabilities such as profiling and logging that a skilled programmer can provide. As such, developers have an essential role in any software development project, despite the increased efficiency of code-generator tools.
Putting aside the questions related to copyright and other legal aspects we've talked about earlier; we see the usage of tools like Copilot explode in 2023. Similar to how GPT helps writers write their text faster, code generators help developers write better code faster. To benefit from code generators, like any other tool, it would be a good practice for your enterprise to have clear guidelines and provide training for developers. This would allow the team to maximise the potential of code generator tools while still benefiting from the human touch. Code generators are here to stay, and they’re only making development faster and easier.
In 2023, companies will increase their use of the cloud, continuing the trend of 2022 with the average compound annual growth rate of cloud provider revenue across most cloud offerings above 20 per cent. The main business drivers for cloud growth are innovation and migration of data and applications.
As many companies have completed their first stage of transformation based on lift-and-shift migration – in 2023, much attention will be given to delivery and architecting the line-of-business applications that will tap into value-add cloud services for analytics, big data, security, and artificial intelligence. One of the key trends in growing cloud adoption won’t change – the fast innovation in the cloud will be one of the key areas of revenue growth for cloud providers.
From the software development perspective, the platform need for simpler applications will ensure the growth of the popularity of serverless PaaS. In contrast, more complex applications designed on top of microservices architecture will drive developments on top of Kubernetes-orchestrated PaaS.
In 2023, Kubernetes solutions will continue to be the leading cloud container orchestration service for managing applications. While Kubernetes has had a stronghold on the market for quite some time, it’s certainly not the only solution. Tanzu, OpenShift, and Fargate are all viable alternatives offering unique features and benefits.
Furthermore, Kubernetes is seeing its reach extend beyond just CNA (cloud-native application) environments as more non-CNA workloads become re-platformed to take advantage of Kubernetes' capabilities. With virtualisation technologies like Kernel-based Virtual Machines (KVM) with KubeVirt, and Container-as-a-VM (cVM) enabling companies to make these transitions seamless, Kubernetes can easily become the go-to solution for most cloud container management needs.
Container orchestration systems such as Kubernetes offer numerous benefits when running virtual machines (VMs). First and foremost, Kubernetes makes it easier to manage VMs in cloud environments. Kubernetes' automated process deployment and scaling capabilities help organisations save time and money while ensuring that resources are used efficiently. Kubernetes can also quickly provision new instances of pre-configured VMs, allowing organisations to scale their workloads with minimal effort.
Additionally, Kubernetes can monitor the health of VMs in real time and take corrective action whenever a problem occurs. Kubernetes can detect performance issues such as high CPU utilisation or memory consumption and scale resources accordingly. Kubernetes can also identify vulnerable applications or services running on the VM and isolate them from the rest of the system so that their security is not compromised.
Of course, this kind of migration is not a walk in the park. From experience, we've seen that networking is a significant issue with non-CNA application migration. As networks on container orchestration platforms behave differently than creating Virtual Networks on cloud (or on-prem), sometimes application changes are required, or even creative solutions around vendor applications, for which the code is unavailable.
On top of container orchestration, solutions like Function-as-a-Service (FaaS), of which the most well-known are AWS Lambda, Azure Functions, and OpenFaaS, bring additional benefits. Even if the hype around FaaS has reduced since 2021, we can now see that it has taken its place among the tools available to application developers. They are now part of modern application architectures and can be used to redefine the way applications are built and deployed.
FaaS provides numerous benefits to organisations when compared to traditional infrastructure models. First, FaaS allows for applications to be built quickly and efficiently with minimal effort since the cloud provider manages the underlying infrastructure (whether public or private). This helps reduce costs associated with setting up and maintaining servers and other hardware. Additionally, FaaS can help reduce a company’s carbon footprint due to its efficient use of resources, which minimises energy consumption. Finally, FaaS enables companies to scale their applications on demand without worrying about provisioning additional resources or managing complex server configurations. All these factors make it an ideal choice for businesses looking for cost savings and environmental sustainability while also taking advantage of the latest cloud technologies available today.
The next step for enterprises to adopt container orchestration and FaaS services is to ensure that the underlying infrastructure can support these technologies and that their teams (development, infrastructure, but also security and even accounting, as we've seen some impact on internal invoicing when using on-demand resources internally) are aware of the benefits and limitations and are trained to use these technologies optimally. In our experience, training like Certified Kubernetes Application Developer (CKAD) and Certified Kubernetes Administrator (CKA) is valuable to technology teams. But we suggest a short internal training on the technology for the non-technology teams (project management, business, accounting, etc.).
FaaS services such as AWS Lambda or Azure Functions have their own requirements, such as specific IAM roles and policies that should be applied before being able to use them properly. Moreover, these services must be connected with other components within the architecture, such as databases, caches, and message queues, for the applications to function correctly. It is also important to note that different features may be available depending on the chosen cloud provider, so enterprises need to familiarise themselves with all their options before deciding.
Another important aspect is security (sorry to sound like a broken record), which includes secure access management and data encryption throughout the system's lifecycle from development time until production deployment. Kubernetes supports Role-Based Access Control (RBAC), enabling companies to define users with different access levels to manage resources securely. As for FaaS services like AWS Lambda or Azure Functions, these platforms provide native security measures such as authentication/authorisation processes and role-based access control. However, if more advanced security measures are required, additional steps must be taken to integrate third-party solutions into the stack.
2023 is the year of intelligent systems and SRE. Companies are already rolling out advanced deployment strategies, self-healing mechanisms, AI-based decision-making and more to ensure their applications are consistently available for their customers (which, in the end, is all that matters). This shift towards intelligent systems requires understanding how they work and the power of automation to reduce toiling and use instrumentation to monitor a system and make decisions (ideally before an issue happens).
By using automated deployments, companies can reduce downtime significantly while improving error detection and resolution. More than a simple deployment, though, we're expecting the rise of more advanced deployment types – the usual ones (e.g. blue/green, canary, ramped), but also more exotic ones (Shadow, for instance). Of course, recreate deployments will still be needed for specific purposes (usually when something happens to the RDBMS databases structure). Still, with intelligent deployment strategies, decisions can be made to select the least disruptive solution depending on the actual deployment's blast radius. This means that, for a specific system, multiple deployment strategies could be used, depending on the content to be deployed.
Another area expected to grow in the coming months is self-healing. This means that when errors do occur, corrective action is taken without manual intervention. It's one of the tenets of SRE to reduce toil and increase platform stability. With AI-based decision-making, companies can take preemptive measures against potential disruptions in service by recognising behavioural data patterns from users, other systems, and external parties. This can also be automated, and automatic decisions can be taken when the behaviour of a system differs too much from the usual one.
The result? Robust applications with fewer disruptions and better user experience.
Intelligent systems can bring more stability and performance. But they can also bring better environmental impact. For instance, libraries are being developed to execute heavy computations and reports when the carbon intensity of the electricity grid is at its lower. This brings better use of the grid and reduces the impact of applications and systems on the environment. With applications running on a worldwide network of data centres (public clouds), one could imagine certain workloads being shifted to different regions depending on the carbon intensity of the grid at that moment, using the same kind of libraries.
Some of these features can also be brought to non-CNA types of workloads by, for instance, modifying the scheduling system or deploying toolkits to bring SRE principles to the support team.
2023 is sure to be an exciting year for intelligent systems and SRE. With advanced deployment strategies, self-healing mechanisms, AI-based decision-making, automated deployments and more - companies will have access to powerful solutions that can improve their services while reducing disruptions and their environmental footprint.
Multi-cloud and cloud agnosticism are related but distinct concepts. Multi-cloud is a strategy for using different cloud services, while cloud agnosticism is a characteristic of a system or software that allows it to run on any cloud service without modification. Multi-cloud can take advantage of cloud-agnostic systems to simplify the integration and management of different cloud services.
As applications further move towards containerisation and container orchestration (e.g. Kubernetes, discussed previously), the ability for a system to run across multiple different platforms and clouds becomes a much more attainable goal. However, there is always a trade-off with this approach. As security and compliance will have an increased focus in 2023, this may increase workloads and introduce additional required tools to enforce rules and policies.
As each public and private (and on-premise) offering has different controls and security tools in place, this often leads to a hybrid “almost cloud agnostic” approach where applications and systems themselves can be deployed anywhere. Still, the surrounding infrastructure and security components may be native to the platform. E.g. Azure Firewall and Azure Policy, AWS Waf and AWS Shield, Palo Alto Prisma Cloud – the list goes on! This definitely needs to be taken into account. Did we mention that security is complex?
The continued uptake in platform agnostic Infrastructure as Code tools, such as Terraform and Pulumi, will also continue to enable organisations to deploy systems across multiple cloud providers. Whilst you can’t generally “use the same code” to deploy across different cloud platforms, you can use the same language, cross-platform tools, automation, and methodology.
As organisations continue to drive towards better availability and performance, the ability to run across multiple cloud providers will become increasingly important.
That wraps up our Tech Trends 2023 series! We hope you’ve enjoyed our thoughts on the future of Web3, Enterprises, Data and Development & Infrastructure. Interested to learn more? Contact our team of experts, and let’s see how we can leverage these trends together.
Contributors: Leo Arkhipov, Kevin Aubry, Michael Biallas, Ian Carter, Dominic Eales, Leonardo Diaz Deramond, Kevin Lawrence, Faisal Ramay, Yudesh Soobrayan, Dan Wheaton