Category: DevOps Practice

  • Broadcom Survey Surfaces Raft of IT Automation Challenges

    Broadcom Survey Surfaces Raft of IT Automation Challenges

    A survey of 501 IT leaders published today by Broadcom suggested that islands of automation that operate independently of each other are major contributing factors to organizations failing to meet service level agreements (SLAs).

    The survey found that 98% of respondents encountered at least one automation issue, with 61% noting that SLA issues are a monthly occurrence. More than a third (35%) said these issues occur weekly. A full 88% indicated SLA breaches directly impacted customers in a significant way.

    The survey also found nearly three-quarters (74%) lacked visibility across their data center and cloud environments, with an equal number lacking end-to-end visibility of their automated business processes. Only 28% possessed tools that could predict automation issues, and more than two-thirds (68%) were unable to model or predict whether a new or updated automation job would actually meet SLAs. A full 69% said they are unable to properly size automation workload resources, with 61% having no way to simulate automation workloads before implementation, the survey found.

    Only slightly more than half (55%) of respondents, however, could provide SLAs and key metrics in a format that is appropriate for business stakeholders.

    Aline Gerew, head of automation for the Agile Operations Division at Broadcom, said that while it’s routine for IT teams to leverage a range of automation tools and platforms to manage IT, it’s clear they are challenged to manage those platforms in a comprehensive fashion. As a result, whenever there is an issue with one tool or platform, it creates a bottleneck that impacts customer experience in a way that ultimately adversely impacts revenue, she noted.

    In fact, many IT teams are now starting to identify automation architects within their IT teams to enable DevOps teams in a more holistic manner, added Gerew.

    Overall, the survey found that 80% of respondents are using three or more automation platforms, with just over a quarter (27%) using six or more.

    Nearly three quarters (74%) are also relying on three or more observability solutions, with just under a quarter (24%) using six or more. Just under three-quarters of respondents noted they are consequently subjected to alert storms that ultimately serve to make it more challenging to resolve issues. More than half (56%) of respondents are blind to the downstream effects of an initial alert and, as a result, do not inform response teams of which systems, jobs, applications and business processes are affected.

    In some ways, IT automation has become too much of a good thing. Every provider of an IT platform makes automation tools available, but as they are invoked, each one creates yet another island that IT teams are expected to manage in isolation. However, all it takes for an SLA not to be met is for an issue to arise that IT teams can’t easily determine the root cause of because one or more automation platforms obscure the underlying issue in the absence of any standardization, noted Gerew.

    Given the complexity of modern IT environments, automation is now a requirement. The issue, as always, is finding a way to apply it all in the most transparent way possible.

  • The Age of Platform Engineering: What to Expect in 2024

    The Age of Platform Engineering: What to Expect in 2024

    Platform engineering has been gaining traction over the last few years, with some likening it to the next iteration of DevOps. Gartner has called it one of the top strategic trends of 2024 – and has predicted that 80% of large software engineering organizations will establish platform engineering teams by 2026. But what’s driving the momentum?

    I believe it’s a result of maturity in the adoption of the cloud by enterprises of all sizes and shapes. As more and more enterprises started using the cloud and embraced DevOps as a path towards quickly taking features to the market, there was a clear need to rethink how the underlying infrastructure and platforms were used for enterprise applications. Platform engineering emerged as the new path to building and managing the underlying application infrastructure.

    It’s been a growth year for platform engineering, but in today’s era of hybrid-cloud-meets-generative-AI, we see new trends emerging in this space. So, what’s next? Here is what we expect to see as we head into 2024.

    Product-Centric Funding Model

    Traditionally, IT was seen as a gatekeeper and cost center. With the cloud, developers gained more leverage in procuring the infrastructure they wanted for their applications. Enterprises realized the value of modernizing their IT operations to meet this modern need and wanted to transform their cloud operations to be part of the innovation team. They see platform engineering as the transformational approach that aligns cloud operations with developers and business users. However, platform engineering requires a product-centric funding model instead of project-centric models in the past, as a product-centric model doesn’t have a start and end date like projects and aligns closely with the product lifecycle with ongoing funding. Enterprises need to recognize this shift from the status quo widely, and we expect this realization to come for businesses in 2024.

    Platform Engineering as an Extension to DevOps

    As enterprises embraced DevOps to accelerate their application development, they still used the traditional gatekeeping models with cloud operations. The embrace of traditional guardrails in the cloud created friction and slowed innovation. With its “as code” model, platform engineering is well suited for reducing friction and accelerating innovation. We expect organizations to embrace platform engineering as the natural extension of DevOps to operate at the speed of business.

    Generative AI Capabilities

    Generative AI is at the peak of the hype cycle as we close out 2023, and in 2024, we will see some enterprise-ready use cases come to life. Generative AI will augment platform engineering with code assistants to create infrastructure-as-code, governance-as-code and security-as-code to ensure smooth Day 2 operations. We will also see chatbots leveraging generative AI to help SREs and other platform engineering pros with documentation, infrastructure playbooks and other relevant use cases.

    2024 is a critical year for organizations as they fend off the economic forces and embrace technological advancements to compete in the global market. Most CXOs will see platform engineering as the top strategic trend to focus on because it brings productivity and cost efficiencies to their organization. This is only the beginning, and the coming decade will be defined by platform engineering, laying a firm foundation for AI-driven innovation in enterprises.

  • 5 Time-Saving and Problem-Solving Technologies for DevOps Teams

    5 Time-Saving and Problem-Solving Technologies for DevOps Teams

    DevOps has transformed almost every aspect of software development, taking us from the dark ages of big-bang deployments every 12 months to the reality of releasing software multiple times per day. However, DevOps professionals have to overcome several hurdles to successfully implement and sustain the DevOps culture within the organization. Let’s review some of these challenges—and five technologies that can help.

    Cultural and Organizational Differences

    One persistent challenge for DevOps teams in a mature setting is navigating cultural and organizational differences. These differences often manifest in varied working styles, communication methods and priority management across teams. For instance, development teams might prioritize rapid innovation, while operations teams focus on stability and security, leading to conflicts. Managing these diverging priorities requires constant negotiation and alignment, which can be time-consuming and complex. 

    Furthermore, as organizations grow and incorporate diverse teams, including remote and international members, ensuring cohesive communication and understanding becomes even more critical. This diversity, while beneficial, brings challenges in terms of aligning on common goals and working practices, often leading to delays and misunderstandings that impede efficient workflow.

    Complexity of Automation

    In mature DevOps environments, the complexity of automation can become a significant day-to-day challenge. As the infrastructure and application landscape grows, the automation scripts and tools that were once efficient can become unwieldy and difficult to manage. Keeping these automation processes up-to-date with the constantly evolving technology stack is a never-ending task, requiring significant time and resources. 

    Additionally, the integration of new tools or updates to existing ones often introduces complexity, leading to potential errors and downtime. This complexity not only slows down the deployment process but also requires DevOps teams to invest time continuously in learning and adapting to new tools and methodologies. Ensuring that automation is both robust and flexible enough to handle a dynamic environment is a delicate balance that DevOps teams must constantly maintain.

    Cross-Team Collaboration

    Effective cross-team collaboration is vital for DevOps teams but can be challenging in day-to-day operations. The interdependence between various teams–such as development, operations, QA and security–requires a high level of coordination, often hindered by differing goals, tools and terminologies. Communication barriers can lead to misalignment on project objectives, causing delays and inefficiencies. 

    Moreover, in a fast-paced DevOps environment, keeping everyone on the same page regarding updates, changes and issues requires meticulous attention. This is compounded when teams are distributed geographically, as time zone differences and cultural nuances add another layer of complexity. Regular synchronization meetings, clear communication channels and shared tools are necessary, but managing these effectively without causing meeting fatigue or information overload is a continuous challenge.

    Consistency and Standardization

    Maintaining consistency and standardization across various projects and teams is a significant challenge for mature DevOps teams. As the number of services and microservices increases, ensuring that each adheres to the same set of standards for coding, security and deployment becomes increasingly difficult. Inconsistencies can lead to significant problems in integration, testing, and deployment, slowing down the entire delivery process. 

    Furthermore, as different teams may prefer different tools and practices, creating a standardized environment that accommodates everyone’s needs without compromising on efficiency or quality is a complex task. Regular audits, effective governance and a balance between flexibility and standardization are essential to manage this challenge, but they require constant effort and vigilance.

    5 Lesser-Known Technologies That Can Help

    While there is no one technology that can completely alleviate the above challenges, there are several tools that can help. Let’s review five technologies that can make the life of a DevOps team just a little bit easier.

    Chaos Engineering Platforms

    If you’re part of a DevOps team, you’re probably all too familiar with the panic that ensues when a system fails unexpectedly. Chaos engineering platforms aim to save you from such unforeseen surprises by embracing the philosophy of ‘breaking things on purpose.’

    Chaos engineering involves intentionally introducing failures into systems to understand how they respond and to identify potential weaknesses. By doing so, DevOps teams can proactively find and fix issues before they manifest in production, thereby saving significant time and preventing potential downtime.

    Platforms like Gremlin and Chaos Monkey offer controlled environments for running these chaos experiments, providing teams with valuable insights and recommendations. In the long term, this can not only save time but also instill a sense of confidence and resilience in your systems.

    Application Dependency Mapping

    Application dependency mapping (ADM) is a process that helps DevOps teams visualize and understand their applications and their dependencies. It is a crucial technology that aids in quickly diagnosing and rectifying application performance issues, thereby saving time.

    ADM provides a holistic view of the application architecture, showing how different components interact with each other. This comprehensive visibility is invaluable during troubleshooting as teams can easily pinpoint problematic areas and rectify them without having to sift through mountains of code.

    Furthermore, ADM is crucial when planning for application changes or upgrades. Understanding how changes in one component may affect others helps in preventing potential disruptions, leading to smoother and faster software delivery.

    Policy-as-Code Solutions

    Policy-as-code is a practice where policy definitions are codified and managed as code files within version control systems. This approach offers a host of benefits that can save time for DevOps teams.

    Policy-as-code solutions enable automatic enforcement of policies, eliminating the need for manual checks. This significantly reduces the time taken to ensure compliance and allows teams to focus more on developing and delivering quality software.

    Moreover, since policies are managed just like any other code, they can be versioned, tested and reviewed before being deployed. This allows for a more streamlined and error-free policy management process, saving valuable time and effort. Tools like Open Policy Agent and HashiCorp Sentinel are commonly used to implement policy-as-code in DevOps environments.

    Service Mesh Technologies

    Next on the list is service mesh, a dedicated infrastructure layer for managing service-to-service communication in a microservices architecture. Service mesh technologies offer a range of features that can save time for DevOps teams.

    One of the primary benefits of a service mesh is its ability to offload common communication concerns from individual services to the mesh itself. This includes functionalities like load balancing, service discovery, and traffic management. By doing so, it saves DevOps teams the time and effort required to implement these functionalities within each service.

    Additionally, service mesh technologies provide detailed observability of the service communication, making it easier for teams to monitor, troubleshoot and optimize their applications. Istio and Linkerd are two common open source options for implementing service mesh.

    Codeless Test Automation Tools

    Codeless test automation tools represent a significant shift in the way DevOps teams approach software testing, offering a more efficient and less time-consuming method. These tools allow the creation of automated tests without the need to write extensive code, making test automation accessible to team members who may not have deep coding expertise.

    Using a graphical user interface, codeless test automation tools let users design tests by simply dragging and dropping elements into a workflow. This approach not only accelerates the test creation process but also simplifies the maintenance and updating of tests as applications evolve. Additionally, these tools often integrate seamlessly with various CI/CD pipelines, ensuring that automated tests can be easily incorporated into existing DevOps workflows.

    With the speed at which technology is advancing, it’s crucial for DevOps teams to stay updated on the latest tools and technologies that can help them optimize their processes. The technologies listed in this article can significantly save time for DevOps team and make complex DevOps workflows a little smoother.

  • Choosing the Right Programming Language

    Choosing the Right Programming Language

    In software engineering, selecting a programming language is a pivotal decision for any organization. The appropriate language contributes to a streamlined development workflow and yields a resilient software solution that facilitates swift and efficient debugging, documentation, enhancement and maintenance. On the other hand, selecting an unsuitable language can set a project on a course for failure from the onset. Given the multitude of available options and the magnitude of this decision, how can programmers ensure they make the most judicious language choice?

    A comprehensive and effective decision-making process begins with a thorough understanding of the current landscape, historical context and the evolutionary trajectory of programming languages. It is also imperative to critically appreciate the benchmarks employed by computer scientists and the industry’s best practices in language selection. Programmers who invest time to enhance their expertise in these domains will mitigate the risk of selecting a language deficient in essential features or one poised for obsolescence, thereby safeguarding the resulting product’s longevity, relevance and success.

    The evolution of programming languages

    Charles Babbage is credited with creating the first computer between 1833 and 1871. He spent nearly 40 years perfecting his invention, which ultimately could perform simple calculations. While Babbage is recognized for building the initial computer, in 1883, Ada Lovelace played a pivotal role by devising the programming language for Babbage’s invention. Today, 140 years later, more than 500 distinct programming languages facilitate human-computer interaction. The continuous adaptation and innovation of programming languages have paralleled the dynamic evolution of technology.

    Contemporary programming languages, such as Swift, Kotlin and Go, exhibit more user-friendly syntax and enhanced ease of use than their predecessors, including SQL, MATLAB and C. Recent languages often integrate features that were unavailable just a few years ago. As such, programmers have the ability to select from a diverse array of languages, identifying the most suitable for their project that facilitates the efficient completion of tasks. For example, Swift is used in Mac and iOS platforms, C# is tailored for the .NET Framework and JavaScript, renowned for constructing the internet, is a testament to the varied roles these languages play in diverse technological domains.

    Selecting the right programming language

    With vast options of programming languages available, one of the greatest challenges is determining which is best suited for a particular project. Comparing the various features and syntaxes of languages can be complicated. Based on recent industry trends, Table 1 details the key programming languages in popular areas/domains.

    Area/Domain

    Programming Languages

    Web development

    JavaScript, Java, HTML5, Ruby, TypeScript

    Mobile development

    Kotlin, Swift, Objective-C, ++, C#

    Data science

    Python, R, SQL, Scala, Julia, MATLAB

    Artificial intelligence and machine learning

    Python, R, Java, Lisp, Prolog, JavaScript

    Cloud computing

    Java, Python, JavaScript, Golang, .Net Core

    Cybersecurity

    Perl, C++, SQL, Ruby, Rust, Assembly

    Table 1: Key programming languages by domain

    Scientifically benchmarking programming languages

    One of the most efficient and effective ways to differentiate programming languages is through benchmarking, a process through which computer scientists analyze and compare programming languages. For instance, they may compare the performance of different programming languages directly against each other. They may also assess performance differences between different compilers or runtimes of the same language with the same source code. In addition, they may assess real server environments such as hosted cloud VMs or Docker/Podman and their effects on the performance of various programming languages.

    Numerous renowned computer scientists have begun benchmarking programming languages, making it easier to tell them apart and select the best language for a particular task. The Computer Language Benchmarks Game is a popular free software project that compares how popular programming languages implement simple algorithms. Programmers can view results and better comprehend each language, its speed and optimal use cases. Additionally, several reputable websites, such as Programming Language and compiler-Benchmarks and Kostya-benchmark, provide computer scientists with side-by-side comparisons of different programming languages, taking into account various performance issues.

    Ranking of programming languages by popularity (2023)

    When selecting a programming language, some of the factors for programmers to consider include the targeted platform, production time, language elasticity, community/support, the programmer’s experience with the language, and the language’s current popularity. Popularity is an important factor because even though more than 500 programming languages are available, most of the industry relies on just 10, making those the most likely to remain in use. Table 2 highlights the 10 most popular programming languages based on the PYPL Index, which assesses how frequently language tutorials are searched for on Google and Stack Overflow’s Developer Survey 2023.

    Ranking

    PYPL Ranking

    September 2023

    Stack Overflow’s

    Developer Survey 2023

    #1

    Python

    JavaScript

    #2

    Java

    HTML/CSS

    #3

    JavaScript

    Python

    #4

    C#

    SQL

    #5

    C/C++

    TypeScript

    #6

    PHP

    Bash/Shell

    #7

    R

    Java

    #8

    TypeScript

    C#

    #9

    Swift

    C++

    #10

    Objective-C

    C

    Table 2: 2023 10 most popular programming languages

    When making the final programming language selection, it is essential to remember that no programming language will be perfect for any particular project. As such, programmers need to allow for some flexibility in the selection process. Determine what is most important, such as speed, performance or fewer lines of code, and then sacrifice other areas to ensure a solution that best fits the identified priorities.

    The future of programming languages

    Today’s programming world is centered around artificial intelligence (AI) and machine learning (ML). As such, languages like Python, currently a driving force behind AI, will likely grow in popularity. Moving forward, programmers can expect an increase in the popularity of JavaScript, which dominates web browsers; Java, which is prevalent in the business world; Kotlin, which is widely used in apps and C++, which is used frequently in system-level programming and game development.

    As technology evolves, programming languages—both existing and yet-to-be-developed—will play a pivotal role in shaping the future of a digital landscape. Their role in incorporating new tech features, expanding ML, augmenting AI and furthering the internet-of-things (IoT) will become increasingly critical.

    As new languages appear and evolve, old languages will fade away. To that end, Analytics Insight recently published a list of 10 programming languages, including currently well-used languages like Visual Basic and COBOL, which it expects to dramatically decrease in popularity and use by 2030. For this reason, it is essential for developers and decision-makers to stay up to date on the ever-evolving world of programming languages. As existing languages are retired and new ones enter the marketplace, it is imperative that professionals learn promising new languages and continually upskill. Those who commit to ongoing training and education will simplify the programming language selection process, increase their chances of running a successful project, and solidify their position in an increasingly competitive marketplace. Those who don’t risk going extinct alongside once-popular programming languages.