Recent Posts
Archives

Archive for the ‘General’ Category

PostHeaderIcon [NodeCongress2023] Evolving the JavaScript Backend – Architectural Shifts in Deno 2.0

Lecturer: Ryan Dahl

Ryan Dahl is an American software engineer and entrepreneur, widely recognized as the creator of the Node.js JavaScript runtime, which he released in 2009. Following his initial work on Node.js, he later created the Deno JavaScript/TypeScript runtime to address what he perceived as fundamental architectural issues in Node.js. Mr. Dahl studied mathematics at the University of California, San Diego (UCSD) and pursued algebraic topology at the University of Rochester for graduate school before pivoting to software engineering, which he found more applicable to real life. He currently serves as the Co-Founder and Chief Executive Officer of Deno Land Inc.. His work emphasizes moving away from centralized module systems and toward conservative, browser-like security models.

Abstract

This article analyzes the strategic architectural and functional changes introduced in Deno 2.0, interpreting them as a move toward enhanced interoperability with the existing Node.js ecosystem and a strong commitment to cloud-native development paradigms. The analysis focuses on key innovations, including dependency management enhancements (package.json auto-discovery and bare specifiers), the introduction of built-in distributed primitives (Deno.KV), and the philosophical shift from optimizing local servers to building optimal global services by restricting programs to distributed cloud primitives.

Context: The Evolution of JavaScript Server Runtimes

The initial philosophy behind the Node.js runtime was to restrict I/O primitives to asynchronous methods, enabling developers to build optimal local servers. However, the proliferation of cloud computing and serverless architectures necessitated a rethinking of runtime design. Deno 2.0 is positioned as an expanded version of this initial philosophy, focusing on restricting programs to distributed Cloud Primitives to facilitate the development of optimal Global Services.

Analysis of Architectural Innovations

Interoperability and Dependency Management

A central focus of Deno 2.0 is improving backwards compatibility and reducing friction for developers migrating from or using npm packages.

  • package.json Auto-Discovery: Deno 2.0 introduces automatic detection and configuration based on an existing package.json file, significantly streamlining the process of using npm packages.
  • Bare Specifiers: The update adds support for bare specifiers (e.g., import { serve } from 'std/http'), enabling modules to be imported without requiring a fully qualified URL, which improves code readability and familiarity for many developers.
  • Import Maps: The use of import maps is highlighted as a solution to address critical issues in the JavaScript ecosystem, specifically the pervasive problem of duplicate dependencies and the issue of disappearing or unmaintained dependencies.
  • deno: Specifiers and Registry: Built-in support for deno: specifiers on the deno.land/x registry provides a recommended and streamlined path for publishing reusable code, promoting internal consistency.

The Shift to Distributed Primitives

The most significant philosophical shift in Deno 2.0 is the direct integration of distributed systems primitives into the runtime. This moves beyond the I/O layer (like Node.js) to address the needs of modern globally distributed applications.

  • Deno.KV (Key-Value Store): This innovation introduces a built-in, globally distributed key-value store. It is designed to be a durable, globally replicated, and transactionally correct database, providing developers with a default persistence layer that is natively integrated and prepared to scale. The concept aims to force optimization by offering a scalable default for state management.
  • Other Cloud Primitives: Other features are under development to support global services, including persistent caches, background workers, and object storage.

Consequences and Implications

The Deno 2.0 feature set represents a concerted effort to optimize JavaScript for the serverless and edge computing landscape. By including distributed primitives like Deno.KV, Deno is reducing the boilerplate and external configuration traditionally required to build a scalable, production-ready backend. The expanded backward compatibility features indicate a pragmatic approach to ecosystem adoption, balancing Deno’s core security and design principles with the practical necessity of using existing npm modules.

This new model reflects an emerging computing abstraction, articulated by the analogy: “bash is to JavaScript as elf is to wasm“. This suggests that JavaScript, running in modern, standards-compliant runtimes, is moving into a “post-Unix future,” becoming the universal scripting and service layer that replaces traditional shell scripting and native binaries in the cloud environment.

Conclusion

Deno 2.0’s innovations solidify its role as a forward-thinking JavaScript runtime designed explicitly for the era of global, distributed services. The focus on integrated cloud primitives and improved interoperability addresses key challenges in modern backend development, pushing the JavaScript ecosystem toward more opinionated, secure, and globally performant architectures. The movement, which includes collaboration in standards bodies like the Web-interoperable Runtimes Community Group (WinterCG), indicates a broad industry consensus on the need for a unified, standards-based approach to server-side JavaScript.

Relevant links and hashtags

Hashtags: #Deno20 #JavaScriptRuntime #CloudNative #GlobalServices #DenoKV #WebInteroperability #NodeCongress

PostHeaderIcon [NodeCongress2021] Nodejs Runtime Performance Tips – Yonatan Kra

Amidst the clamor of high-stakes deployments, where milliseconds dictate user satisfaction and fiscal prudence, refining Node.js execution emerges as a paramount pursuit. Yonatan Kra, software architect at Vonage and avid runner, recounts a pivotal incident—a customer’s frantic call amid a faltering microservice, where a lone sluggish routine ballooned latencies from instants to eternities. This anecdote catalyzes his compendium of runtime enhancements, gleaned from battle-tested optimizations.

Yonatan initiates with diagnostic imperatives: Chrome DevTools’ performance tab chronicles timelines, flagging CPU-intensive spans. A contrived endpoint—filtering arrays via nested loops—exemplifies: record traces reveal 2-3 second overruns, dissected via flame charts into redundant iterations. Remedies abound: hoist computations outside loops, leveraging const for immutables; Array.prototype.filter supplants bespoke sieves, slashing cycles by orders.

Garbage collection looms large; Yonatan probes heap snapshots, unveiling undisposed allocations. An interval emitter appending to external arrays evades reclamation, manifesting as persistent blue bars—unfreed parcels. Mitigation: nullify references post-use, invoking gc() in debug modes for verification; gray hues signal success, affirming leak abatement.

Profiling Memory and Function Bottlenecks

Memory profiling extends to production shadows: –inspect flags remote sessions, timeline instrumentation captures allocations sans pauses. Yonatan demos: API invocations spawn specials, uncollected until array clears, transforming azure spikes to ephemeral grays. For functions, Postman sequences gauge holistically—from ingress to egress—isolating laggards for surgical tweaks.

Yonatan dispels myths: performance isn’t arcane sorcery but empirical iteration—profile relentlessly, optimize judiciously. His zeal, born of crises, equips Node.js stewards to forge nimble, leak-free realms, where clouds yield dividends and users endure no stutter.

Links:

PostHeaderIcon [PHPForumParis2022] Code Review: We Didn’t Come to Suffer! – Anne-Laure de Boissieu

Anne-Laure de Boissieu, a backend developer at Bedrock, delivered a heartfelt presentation at PHP Forum Paris 2022 on transforming code reviews into positive, constructive experiences. As a member of the Duchess France network and an organizer of the Mixit conference, Anne-Laure shared personal anecdotes and practical strategies to make code reviews less daunting and more collaborative, drawing from her experience at Bedrock and her passion for community engagement.

Reframing Code Reviews as Collaboration

Anne-Laure began by addressing the emotional challenges of code reviews, recounting instances where feedback felt personal or discouraging. She argued that code reviews should be a collaborative process, not a source of suffering. By adopting a constructive mindset, developers can focus on improving code quality rather than defending their work. Anne-Laure emphasized the importance of clear communication, citing her own experiences at Bedrock, where supportive feedback helped her grow as a developer.

Best Practices for Effective Reviews

Drawing from Bedrock’s workflow, Anne-Laure shared actionable best practices for code reviews. She advocated for assigning a “buddy” to new developers for initial reviews, conducting verbal feedback sessions to reduce misunderstandings, and addressing complex feedback in person. Referencing Amélie’s talk on onboarding, she highlighted small tasks, like adding a name to a list, to familiarize newcomers with workflows. These practices, Anne-Laure argued, create a supportive environment that fosters learning and aligns with team standards.

Building a Positive Review Culture

Anne-Laure emphasized that human interactions are key to successful code reviews. She cautioned against piling up written comments, which can escalate tensions, and encouraged direct discussions to resolve issues. By sharing her journey from feeling hurt by feedback to valuing constructive critiques, Anne-Laure inspired developers to approach reviews with empathy and openness. Her insights underscored the role of team dynamics in creating a culture where reviews enhance collaboration and professional growth.

Links:

PostHeaderIcon [PHPForumParis2022] Testing Through OpenAPI, or How to Validate Your Documentation – Stéphane Hulard

Stéphane Hulard, CTO at Chstudio, delivered a compelling session at PHP Forum Paris 2022 on using OpenAPI to validate API documentation. With four years of experience maintaining a PHP-based project, Stéphane shared a practical approach to ensuring documentation aligns with implementation. His talk emphasized the synergy between testing and documentation, offering developers a workflow to enhance collaboration and maintainability in API-driven projects.

The Role of OpenAPI in Documentation

Stéphane introduced OpenAPI as a standardized format for describing APIs, enabling both human-readable documentation and automated testing. He explained how OpenAPI specifications serve as a contract between backend and frontend teams, ensuring consistency. By documenting a single API endpoint, developers can validate its behavior through automated tests, creating a virtuous cycle of reliable documentation and robust code. Stéphane emphasized starting small, documenting one endpoint at a time to build momentum.

Implementing Documentation-Driven Testing

Delving into technical details, Stéphane demonstrated how to integrate OpenAPI with PHP projects, using tools to generate and validate API requests. He shared code examples from Chstudio’s workflow, illustrating how tests derived from OpenAPI specs catch discrepancies early. This approach, akin to Test-Driven Development (TDD), ensures that documentation remains accurate as the codebase evolves. Stéphane highlighted the importance of enriching test suites with edge cases to uncover potential bugs, enhancing overall API reliability.

Enhancing Collaboration Across Teams

Stéphane underscored OpenAPI’s role in fostering collaboration between backend and frontend developers. By defining API contracts upfront, teams can make informed design decisions, reducing miscommunication. He described Chstudio’s experience with a monolithic repository, where OpenAPI facilitated smoother interactions despite the absence of microservices. Stéphane’s approach, which he termed Documentation-Driven Design (DDD), aligns development and documentation efforts, ensuring both are prioritized from the project’s outset.

Encouraging Community Contributions

Concluding, Stéphane invited developers to contribute to open-source OpenAPI tools, emphasizing their accessibility for PHP projects. He encouraged attendees to adopt incremental documentation practices, noting that even partial coverage yields significant benefits. By sharing Chstudio’s workflow, Stéphane inspired developers to integrate OpenAPI into their projects, fostering a culture of disciplined documentation and testing.

Links:

PostHeaderIcon [NodeCongress2021] Push Notifications: Can’t Live With Em, Can’t Live Without Em – Avital Tzubeli

In an era where digital alerts permeate daily rhythms, the orchestration of push notifications embodies a delicate equilibrium between immediacy and reliability. Avital Tzubeli, a backend engineer at Vonage, unravels this dynamic through her recounting of the message bus at the heart of their communications platform—a conduit dispatching 16 million dispatches daily, contending with temporal pressures and infrastructural strains. Drawing from Hebrew folklore, where a louse embarks on a globetrotting odyssey, Avital likens notifications to intrepid voyagers navigating service boundaries.

Avital’s tale unfolds across Vonage’s ecosystem: inbound triggers from Frizzle ingress via RabbitMQ queues, auto-scaling consumers in HTTP services validate payloads, appending trace IDs for audit trails. Continuation Local Storage (CLS-Hooked) embeds identifiers in request scopes, facilitating log enrichment without prop modifications. As payloads traverse to PushMe—Vonage’s dispatch hub—interceptors affix traces to Axios headers, ensuring end-to-end visibility.

This choreography yields sub-15ms latencies: Frizzle to HTTP in milliseconds, thence to PushMe, culminating in device delivery via APNS or FCM. Avital spotlights middleware elegance—CLS-Hooked instances persist contexts, auto-injecting IDs into logs or headers, oblivious to underlying transports.

Architectural Resilience and Observability

Resilience pivots on RabbitMQ’s durability: dead-letter exchanges quarantine failures, retries exponential backoffs temper bursts. Monitoring via Grafana dashboards tracks queue depths, consumer lags; alerts preempt pileups. Avital shares code vignettes—middleware instantiation, trace retrieval, log augmentation—revealing CLS-Hooked’s prowess in decoupling concerns.

For broader applicability, Avital posits analogous buses for event sourcing or microservice fan-outs: RabbitMQ’s ACK semantics guarantee at-least-once semantics, complemented by idempotent handlers. Blaming externalities like Apple for undelivered alerts underscores the perils of third-party dependencies, yet Vonage’s stack—Node.js scripts fueling the frenzy—exemplifies robust engineering.

Avital’s odyssey, though sans parasitic flair, affirms notifications’ global sprint, propelled by vigilant teams and scalable sinews.

Links:

PostHeaderIcon [PHPForumParis2022] Breaking Out of the Framework – Robin Chalas

Robin Chalas, an architect at Les-Tilleuls.coop, captivated attendees at PHP Forum Paris 2022 with a thought-provoking exploration of decoupling code from the Symfony framework. Stepping in for another speaker, Robin challenged developers to rethink their reliance on frameworks, advocating for architectures that prioritize maintainability and flexibility. Drawing from his experience with API Platform and Domain-Driven Design (DDD), he offered practical strategies for creating sustainable, framework-agnostic codebases.

The Pitfalls of Framework Dependency

Robin began by addressing a recurring question in Symfony projects: “Should I modify the framework’s defaults?” He argued that tight coupling to Symfony’s conventions can hinder long-term maintainability, especially as projects evolve. By relying heavily on framework-specific features, developers risk creating codebases that are difficult to adapt or migrate. Robin emphasized the need to balance Symfony’s convenience with architectural independence, setting the stage for a deeper discussion on decoupling strategies.

Embracing Domain-Driven Design

Drawing inspiration from Mathias Noback’s Recipes for Decoupling, Robin introduced DDD as a methodology to reduce framework adherence. He explained how DDD encourages developers to focus on domain logic, encapsulating business rules in standalone entities rather than framework-dependent components. By structuring code around domain concepts, developers can create applications that are easier to test and maintain. Robin highlighted practical examples from Les-Tilleuls’ work with API Platform, demonstrating how DDD enhances code portability across frameworks.

Practical Steps for Decoupling

Robin shared actionable techniques for reducing framework dependency, such as abstracting service layers and using dependency injection effectively. He advocated for modular architectures that allow components to function independently of Symfony’s ecosystem. Referencing Les-Tilleuls’ DDD-focused workshops, Robin encouraged developers to experiment with these patterns, emphasizing their benefits in creating maintainable code. He also addressed the trade-offs, noting that while decoupling requires initial effort, it yields significant long-term gains in flexibility.

Inspiring Community Collaboration

Concluding, Robin invited developers to engage with Les-Tilleuls’ open-source initiatives and explore DDD through resources like Mathias Noback’s writings. He emphasized the cooperative’s commitment to mentoring teams in adopting advanced architectures. By sharing his expertise, Robin inspired attendees to rethink their approach to Symfony, fostering a community-driven push toward more resilient and adaptable codebases.

Links:

PostHeaderIcon [NodeCongress2021] Machine Learning in Node.js using Tensorflow.js – Shivay Lamba

The fusion of machine learning capabilities with server-side JavaScript environments opens intriguing avenues for developers seeking to embed intelligent features directly into backend workflows. Shivay Lamba, a versatile software engineer proficient in DevOps, machine learning, and full-stack paradigms, illuminates this intersection through his examination of TensorFlow.js within Node.js ecosystems. As an open-source library originally developed by the Google Brain team, TensorFlow.js democratizes access to sophisticated neural networks, allowing practitioners to train, fine-tune, and infer models without forsaking the familiarity of JavaScript syntax.

Shivay’s narrative commences with the foundational allure of TensorFlow.js: its seamless portability across browser and Node.js contexts, underpinned by WebGL acceleration for tensor operations. This universality sidesteps the silos often encountered in traditional ML stacks, where Python dominance necessitates cumbersome bridges. In Node.js, the library harnesses native bindings to leverage CPU/GPU resources efficiently, enabling tasks like image classification or natural language processing to unfold server-side. Shivay emphasizes practical onboarding—install via npm, import tf, and instantiate models—transforming abstract algorithms into executable logic.

Consider a sentiment analysis endpoint: load a pre-trained BERT variant, preprocess textual inputs via tokenizers, and yield probabilistic outputs—all orchestrated in asynchronous handlers to maintain Node.js’s non-blocking ethos. Shivay draws from real-world deployments, where such integrations power recommendation engines or anomaly detectors in e-commerce pipelines, underscoring the library’s scalability for production loads.

Streamlining Model Deployment and Inference

Deployment nuances emerge as Shivay delves into optimization strategies. Quantization shrinks model footprints, slashing latency for edge inferences, while transfer learning adapts pre-trained architectures to domain-specific corpora with minimal retraining epochs. He illustrates with a convolutional neural network for object detection: convert ONNX formats to TensorFlow.js via converters, bundle with webpack for serverless functions, and expose via Express routes. Monitoring integrates via Prometheus metrics, tracking inference durations and accuracy drifts.

Challenges abound—memory constraints in containerized setups demand careful tensor management, mitigated by tf.dispose() invocations. Shivay advocates hybrid approaches: offload heavy training to cloud TPUs, reserving Node.js for lightweight inference. Community extensions, like @tensorflow/tfjs-node-gpu, amplify throughput on NVIDIA hardware, aligning with Node.js’s event-driven architecture.

Shivay’s exposition extends to ethical considerations: bias audits in datasets ensure equitable outcomes, while federated learning preserves privacy in distributed training. Through these lenses, TensorFlow.js transcends novelty, evolving into a cornerstone for ML-infused Node.js applications, empowering creators to infuse intelligence without infrastructural overhauls.

Links:

PostHeaderIcon [DevoxxPL2022] Accelerating Big Data: Modern Trends Enable Product Analytics • Boris Trofimov

Boris Trofimov, a big data expert from Sigma Software, delivered an insightful presentation at Devoxx Poland 2022, exploring modern trends in big data that enhance product analytics. With experience building high-load systems like the AOL data platform for Verizon Media, Boris provided a comprehensive overview of how data platforms are evolving. His talk covered architectural innovations, data governance, and the shift toward serverless and ELT (Extract, Load, Transform) paradigms, offering actionable insights for developers navigating the complexities of big data.

The Evolving Role of Data Platforms

Boris began by demystifying big data, often misconstrued as a magical solution for business success. He clarified that big data resides within data platforms, which handle ingestion, processing, and analytics. These platforms typically include data sources, ETL (Extract, Transform, Load) pipelines, data lakes, and data warehouses. Boris highlighted the growing visibility of big data beyond its traditional boundaries, with data engineers playing increasingly critical roles. He noted the rise of cross-functional teams, inspired by Martin Fowler’s ideas, where subdomains drive team composition, fostering collaboration between data and backend engineers.

The convergence of big data and backend practices was a key theme. Boris pointed to technologies like Apache Kafka and Spark, which are now shared across both domains, enabling mutual learning. He emphasized that modern data platforms must balance complexity with efficiency, requiring specialized expertise to avoid pitfalls like project failures due to inadequate practices.

Architectural Innovations: From Lambda to Delta

Boris delved into big data architectures, starting with the Lambda architecture, which separates data processing into speed (real-time) and batch layers for high availability. While effective, Lambda’s complexity increases development and maintenance costs. As an alternative, he introduced the Kappa architecture, which simplifies processing by using a single streaming layer, reducing latency but potentially sacrificing availability. Boris then highlighted the emerging Delta architecture, which leverages data lakehouses—hybrid systems combining data lakes and warehouses. Technologies like Snowflake and Databricks support Delta, minimizing data hops and enabling both batch and streaming workloads with a single storage layer.

The Delta architecture’s rise reflects the growing popularity of data lakehouses, which Boris praised for their ability to handle raw, processed, and aggregated data efficiently. By reducing technological complexity, Delta enables faster development and lower maintenance, making it a compelling choice for modern data platforms.

Data Mesh and Governance

Boris introduced data mesh as a response to monolithic data architectures, drawing parallels with domain-driven design. Data mesh advocates for breaking down data platforms into bounded contexts, each owned by a dedicated team responsible for its pipelines and decisions. This approach avoids the pitfalls of monolithic pipelines, such as chaotic dependencies and scalability issues. Boris outlined four “temptations” to avoid: building monolithic pipelines, combining all pipelines into one application, creating chaotic pipeline networks, and mixing domains in data tables. Data mesh, he argued, promotes modularity and ownership, treating data as a product.

Data governance, or “data excellence,” was another critical focus. Boris stressed the importance of practices like data monitoring, quality validation, and retention policies. He advocated for a proactive approach, where engineers address these concerns early to ensure platform reliability and cost-efficiency. By treating data governance as a checklist, teams can mitigate risks and enhance platform maturity.

Serverless and ELT: Simplifying Big Data

Boris highlighted the shift toward serverless technologies and ELT paradigms. Serverless solutions, available across transformation, storage, and analytics tiers, reduce infrastructure management burdens, allowing faster time-to-market. He cited AWS and other cloud providers as enablers, noting that while not always cost-effective, serverless minimizes maintenance efforts. Similarly, ELT—where transformation occurs after loading data into a warehouse—leverages modern databases like Snowflake and BigQuery. Unlike traditional ETL, ELT reduces latency and complexity by using database capabilities for transformations, making it ideal for early-stage projects.

Boris also noted the resurgence of SQL as a domain-specific language across big data tiers, from transformation to governance. By building frameworks that express business logic in SQL, developers can accelerate feature delivery, despite SQL’s perceived limitations. He emphasized that well-designed SQL queries can be powerful, provided engineers avoid poorly structured code.

Productizing Big Data and Business Intelligence

The final trend Boris explored was the productization of big data solutions. He likened this to Intel’s microprocessor revolution, where standardized components accelerated hardware development. Companies like Absorber offer “data platform as a service,” enabling rapid construction of data pipelines through drag-and-drop interfaces. While limited for complex use cases, such solutions cater to organizations seeking quick deployment. Boris also discussed the rise of serverless business intelligence (BI) tools, which support ELT and allow cross-cloud data queries. These tools, like Mode and Tableau, enable self-service analytics, reducing the need for custom platforms in early stages.

Links:

PostHeaderIcon [DevoxxPL2022] Data Driven Secure DevOps – Deliver Better Software, Faster! • Raveesh Dwivedi

Raveesh Dwivedi, a digital transformation expert from HCL Technologies, captivated the Devoxx Poland 2022 audience with a compelling exploration of data-driven secure DevOps. With over a decade of experience at HCL, Raveesh shared insights on how value stream management (VSM) can transform software delivery, aligning IT efforts with business objectives. His presentation emphasized eliminating inefficiencies, enhancing governance, and leveraging data to deliver high-quality software swiftly. Through a blend of strategic insights and a practical demonstration, Raveesh showcased how HCL Accelerate, a VSM platform, empowers organizations to optimize their development pipelines.

The Imperative of Value Stream Management

Raveesh opened by highlighting a common frustration: business stakeholders often perceive IT as a bottleneck, blaming developers for delays. He introduced value stream management as a solution to bridge this gap, emphasizing its role in mapping the entire software delivery process from ideation to production. By analyzing a hypothetical 46-week delivery cycle, Raveesh revealed that 80% of the time—approximately 38 weeks—was spent waiting in queues due to resource constraints or poor prioritization. This inefficiency, he argued, could cost businesses millions, using a $200,000-per-week feature as an example. VSM addresses this by identifying bottlenecks and quantifying the cost of delays, enabling better decision-making and prioritization.

Raveesh explained that VSM goes beyond traditional DevOps automation, which focuses on continuous integration, testing, and delivery. It incorporates the creative aspects of agile development, such as ideation and planning, ensuring a holistic view of the delivery pipeline. By aligning IT processes with business value, VSM fosters a cultural shift toward business agility, where decisions prioritize urgency and impact. Raveesh’s narrative underscored the need for organizations to move beyond siloed automation and embrace a system-wide approach to software delivery.

Leveraging HCL Accelerate for Optimization

Central to Raveesh’s presentation was HCL Accelerate, a VSM platform designed to visualize, govern, and optimize DevOps pipelines. He described how Accelerate integrates with existing tools, pulling data into a centralized data lake via RESTful APIs and pre-built plugins. This integration enables real-time tracking of work items as they move from planning to deployment, providing visibility into bottlenecks, such as prolonged testing phases. Raveesh demonstrated how Accelerate’s dashboards display metrics like cycle time, throughput, and DORA (DevOps Research and Assessment) indicators, tailored to roles like developers, DevOps teams, and transformation leaders.

The platform’s strength lies in its ability to automate governance and release management. For instance, it can update change requests automatically upon deployment, ensuring compliance and traceability. Raveesh showcased a demo featuring a loan processing value stream, where work items appeared as dots moving through phases like development, testing, and deployment. Red dots highlighted anomalies, such as delays, detected through AI/ML capabilities. This real-time visibility allows teams to address issues proactively, ensuring quality and reducing time-to-market.

Enhancing Security and Quality

Security and quality were pivotal themes in Raveesh’s talk. He emphasized that HCL Accelerate integrates security scanning and risk assessments into the pipeline, surfacing results to all stakeholders. Quality gates, configurable within the platform, ensure that only robust code reaches production. Raveesh illustrated this with examples of deployment frequency and build stability metrics, which help teams maintain high standards. By providing actionable insights, Accelerate empowers developers to focus on delivering value while mitigating risks, aligning with the broader goal of secure DevOps.

Cultural Transformation through Data

Raveesh concluded by advocating for a cultural shift toward data-driven decision-making. He argued that while automation is foundational, the creative and collaborative aspects of DevOps—such as cross-functional planning and stakeholder alignment—are equally critical. HCL Accelerate facilitates this by offering role-based access to contextualized data, enabling teams to prioritize features based on business value. Raveesh’s vision of DevOps as a bridge between IT and business resonated, urging organizations to adopt VSM to achieve faster, more reliable software delivery. His invitation to visit HCL’s booth for further discussion reflected his commitment to fostering meaningful dialogue.

Links:

PostHeaderIcon [SpringIO2022] How to foster a Culture of Resilience

Benjamin Wilms, founder of Steadybit, delivered a compelling session at Spring I/O 2022, exploring how to build a culture of resilience through chaos engineering. Drawing from his experience and the evolution of chaos engineering since his 2019 Spring I/O talk, Benjamin emphasized proactive strategies to enhance system reliability. His presentation combined practical demonstrations with a framework for integrating resilience into development workflows, advocating for collaboration and automation.

Understanding Resilience and Chaos Engineering

Benjamin began by defining resilience as the outcome of well-architected, automated, and thoroughly tested systems capable of recovering from faults while delivering customer value. Unlike traditional stability, resilience involves handling partial outages with fallbacks or alternatives, ensuring service continuity. He introduced chaos engineering as a method to test this resilience by intentionally injecting faults—latency, exceptions, or service outages—to build confidence in system capabilities.

Chaos engineering involves defining a steady state (e.g., successful Netflix play button clicks), forming hypotheses (e.g., surviving a payment service outage), and running experiments to verify outcomes. Benjamin highlighted its evolution from a niche practice at Netflix to a growing community discipline, but noted its time-intensive nature often deters teams. He stressed that resilience extends beyond systems to organizational responsiveness, such as detecting incidents in seconds rather than minutes.

Pitfalls of Ad-Hoc Chaos Engineering

To illustrate common mistakes, Benjamin demonstrated a flawed approach using a Kubernetes-based microservice system with a gateway and three backend services. Running a random “delete pod” attack on the hotel service caused errors in the gateway’s product list aggregation, visible in a demo UI. However, the experiment yielded little insight, as it only confirmed the attack’s impact without actionable learnings. He critiqued such ad-hoc attacks—using tools like Pumbaa—for disrupting workflows and requiring expertise in CI/CD integration, diverting focus from core development.

This approach fails to generate knowledge or improve systems, often becoming a “rabbit hole” of additional work. Benjamin argued that starting with tools or attacks, rather than clear objectives, undermines the value of chaos engineering, leaving teams with vague results and no clear path to enhancement.

Building a Culture of Resilience

Benjamin proposed a structured approach to foster resilience, starting with the “why”: understanding motivations like surviving AWS zone outages or ensuring checkout services handle payment downtimes. The “what” involves defining specific capabilities, such as maintaining 95% request success during pod failures or implementing retry patterns. He advocated encoding these capabilities as policies—code-based checks integrated into the development pipeline.

In a demo, Benjamin showed how to define a policy for the gateway service, specifying pod redundancy and steady-state checks via a product list endpoint. The policy, stored in the codebase, runs in a CI/CD pipeline (e.g., GitHub Actions) on a staging environment, verifying resilience after each commit. This automation ensures continuous validation without manual intervention, embedding resilience into daily workflows. Policies include pre-built experiments from communities (e.g., Zalando) or static weak spot checks, like missing Kubernetes readiness probes, making resilience accessible to all developers.

Organizational Strategies and Community Impact

Benjamin addressed organizational adoption, suggesting a central component to schedule experiments and avoid overlapping tests in shared environments. For consulting scenarios, he recommended analyzing past incidents to demonstrate resilience gaps, such as running experiments to recreate outages. He shared a case where a client’s system collapsed during a rolling update under load, underscoring the need for combined testing scenarios.

He encouraged starting with static linters to identify configuration risks and replaying past incidents to prevent recurrence. By integrating resilience checks into pipelines, teams can focus on feature delivery while maintaining reliability. Benjamin’s vision of a resilience culture—where proactive testing is instinctive—resonates with developers seeking to balance velocity and stability.

Links: