Agile software development is constantly evolving to address the challenges of modern software development. This article explores some of the latest trends in agile development, including cloud-based infrastructure, online Scrum, containerization, DevOps, low-code/no-code tools, schema-less data, and serverless computing. These trends can help to make software development more efficient, scalable, and collaborative.
Software development tends to acquire some rigidity no matter how agile the development is because once software is deployed in production, it is not convenient or feasible to constantly change the deployed software, as it involves making and propagating an upgrade. This article explores some agile trends that may be suitable for inclusion. Some of these trends have been around for a while, and others may have come into vogue recently. These agile trends are not specific to any technology or framework, and can be used for any type of software development.
Cloudification
Cloudification means taking your infrastructure, data, and code to a cloud platform. Hybrid computing takes a subset of these to a cloud while keeping the rest local. Cloudification has the obvious benefit of not having to acquire and provision infrastructure, and the infrastructure that is used could be changed as needed. Cloudification makes it possible to provide services rather than plain old software. SaaS (Software as a Service) , PaaS (Platform as a Service), DbaaS (Database as a Service) are common models for software on a cloud platform. Cloudification provides several benefits.
Scrum Online
Scrum envisaged a close collaboration between software team members when it was originally proposed and put into use in the 1980s and 90s. The main reason for the close collaboration is that Scrum depends on sprints (iterations, timeboxes) that require team members to explore a specific goal. A sprint runs over a short period of time, which could be a day to a week or two. Daily scrum lasts no more than 15-20 minutes during which team members may discuss only the most important things. Scrumban, which is based on the Scrum and Kanban models, recommends making use of post-it-notes on a whiteboard. In the new age of software development, such close collaboration as originally envisaged may not always be feasible because software developers are typically distributed geographically. All of which makes online Scrum platforms a suitable alternative. Asana and Jira are two online project management tools for Agile software development.
Containerization
Containerization is a virtualization technology. Virtualization, used since the 1960s, came into use as a means to apportion system resources among the applications, processes, and users. Virtualization could be at the hardware or operating system level.
Hardware virtualization makes use of virtual machines running as distinct computers with each having its own operating system, on the single underlying host machine. Hardware virtualization makes use of hypervisors, which is nothing but software, to provision new virtual machines. One limitation that was obvious but unsurpassable at first was that a single virtual machine could run only a single operating system. If a developer was making use of a single virtual machine to run a single software, the likelihood was high that the complete operating system was not being used and that some of the OS was just in a sense wasted.
Containerization, which came into vogue ten years ago with Docker as a containerization platform, provides a lightweight alternative to traditional hardware virtualization. The main advantage of Docker, and containerization in general, is that multiple Docker containers can run on a single host machine with each container isolated from the others and having its own operating system, filesystem, and software. Unlike a virtual machine that makes use of a complete operating system, a single Docker container only makes use of a snapshot of the underlying operating system kernel.
DevOps
DevOps is an agile model that blends software development (Dev) with the operational (Ops) aspect of software and was developed mainly to make the transition from software development to software use in production smoother. DevOps recommends methodologies of continuous integration (CI), continuous delivery (CD), continuous deployment, and collaboration. Essentially, DevOps adds continuity to software development. DevOps can be facilitated by the microservices architectural model. Further, DevOps makes use of automation and continuous testing.
As an example, the following sequence represents a DevOps-based software development lifecycle (assume that some software that has code stored on GitHub is deployed into production):
- Multiple software developers merge their code to Github.
- A code pipeline detects that code has changed on GitHub.
- The code pipeline initiates a process to integrate the new code changes, referred to as continuous integration.
- The software is updated with the new code changes, and suitably tested, perhaps in a Jenkins pipeline.
- The updated and tested software is made available to software production, which is referred to as continuous delivery.
- The updated software is deployed into production, referred to as continuous deployment.
The complete DevOps sequence is initiated and completed automatically each time a batch of software changes is merged into a production code repository on GitHub. Optionally, a DevOps technician may be included to accept/reject transitioning to a subsequent stage such as deploying updated software into production.
Low-Code / No-Code
To take the spadework out of coding, some tools have become available that generate code from a template, or a design. Low-code tools require some coding in addition to using the code templates themselves. No-code tools convert a design or a diagram to code, and can be used for learning a new language or generating useful production-grade code.
An example of a no-code tool is Blockly by Google. Blockly can be used to select, drag, and drop blocks interactively to generate code in JavaScript, and PHP as an example.
Some no-code tools may provide bi-directional coding, implying that a design can be converted to code and code can be reverse-converted to design. An example of a bi-directional low code tool is Henosia, which is designed in code. Henosia treats the design and the code stack as the same without a significant change in data format while converting between the two and without a significant data loss.
Schema-Less Data
Schema-less data came into vogue with the big data model that the web-scale applications needed. Schema-less implies (unlike a relational data model with fixed columns and column data types) that data may be stored in an unstructured manner with no fixed column names or fixed data types. Several NoSQL databases are available based on the JSON format, which is most suitable for schema-less data. MongoDB is a NoSQL database that is based on Binary JSON (BSON). An earlier article, Agile Data Modeling with MySQL Document Store, explores JSON support in the MySQL database.
Serverless
Serverless software development provides a managed environment within which a developer does not explicitly run code on a server. But serverless does not mean that no server is used at all—it means that the managed service uses a server. Serverless could refer to the serverless computing environment in which a cloud service provisions, configures, and scales the underlying server transparently to an end-user. Or, serverless could refer to a serverless compute runtime that makes use of Function as a Service (FaaS) to run the application logic that was loaded to it in order to return a result.
Conclusion
Several of the computing paradigms discussed in this article started out as being bulky, monolithic, and nonadaptive. The agile principles recommend lightweightedness, adaptability, continuous availability of software, sustainable development, and simplicity. These 7 agile trends provide all of these benefits.