• January 1, 1
Table of Contents

Navigating the Complexity of Modern Development: Introducing the Self-Service Development…

In the ever-evolving landscape of software development, the journey from idea to implementation has undergone a profound transformation. Cast your mind back to the 90s, where uniformity reigned supreme. Developers were akin to scribes, all writing in the same language, adhering to the dictates of a singular development environment. However, fast forward to today, and you’ll find a vastly different scenario. Each team possesses its arsenal of tools, a medley of programming languages, and a unique infrastructure blueprint. This diversity, while fostering innovation, also presents a formidable challenge: how to streamline the setup of development environments to ensure seamless productivity across the board.

From home 2 FaaS -> <a href=\image credit" src="https://cdn-images-1.medium.com/max/2000/1*RJYAwdaf9U676cHLLpSieA.png">From home 2 FaaS -> image credit

The crux of the issue lies in the realization that the haphazard assembly of development environments can spell disaster for project timelines and feature delivery. Imagine a scenario where disparate architectures coexist within the same organization — a legacy monolith, a nimble serverless stack handling critical functions, and a constellation of microservices scattered across various hosting platforms. Each of these architectures carries its own set of best practices and idiosyncrasies, making onboarding and contributing a labyrinthine process for newcomers.

Self-Service Development Environment (SDE)

Enter the concept of the Self-Service Development Environment (SDE). At its core, the SDE is about empowering developers to swiftly configure their workspace, irrespective of the complexity of the underlying infrastructure. It begins with a candid acknowledgment of the challenges at hand and proceeds with meticulous mapping of the tools, APIs, and services utilized by the team. However, the path to achieving a seamless SDE is fraught with hurdles.

<strong>A small decision</strong> <strong>== A Big</strong> implication on self-service dev env’sA small decision == A Big implication on self-service dev env’s

Consider the journey of a developer embarking on a new project. The first checkpoint is often a simple code checkout, but even this seemingly innocuous step can reveal the underlying chaos. The choice between a monolithic or poly-repo architecture sets the tone for the development journey, with each approach offering its own blend of clarity and complexity. From there, the landscape only grows more intricate as decisions regarding frameworks, cloud providers, and managed services come into play.

In response to this complexity, a wave of developer-centric initiatives has emerged, seeking to demystify the process of environment setup. Developer portals, reminiscent of the golden age of fast food, promise a self-service experience akin to ordering a burger at McDonald’s. These portals offer scaffolding tools and cookie-cutter templates, encapsulating everything from environment variables to CI/CD pipelines in a single package. This shift from manual configuration to automated provisioning not only reduces developer friction but also accelerates time-to-contribution.

DALL-E | IDP’s and how the help organizationsDALL-E | IDP’s and how the help organizations

So let’s say we’re just getting started with this self-service development environment — where do we begin ?

Options …

  1. Cloud Development Environments (CDEs): With the rise of cloud computing, developers now have the option to harness the power of remote infrastructure directly within their development workflow. CDEs offer the convenience of accessing development environments hosted on cloud platforms such as AWS Cloud9, Microsoft Visual Studio Online, or Google Cloud Shell. By leveraging scalable resources and eliminating the need for local setup, CDEs provide an agile solution for collaborative coding and seamless integration with cloud services.

  2. Remote Development Environments (RDEs): In an era defined by distributed teams and remote work, RDEs have emerged as a game-changer for fostering collaboration across geographical boundaries. These environments enable developers to access and contribute to projects hosted on remote servers or virtual machines. Tools like Visual Studio Code’s Remote Development extension suite or GitHub Codespaces empower developers to write, debug, and deploy code from anywhere with an internet connection. By centralizing development environments and mitigating compatibility issues, RDEs promote efficiency and inclusivity in modern workflows.

  3. Standardized Development Environments (SDEs): As the name suggests, SDEs advocate for a standardized approach to development environment setup, ensuring consistency and reproducibility across teams and projects. These environments are characterized by predefined configurations, toolchains, and workflows designed to streamline the development lifecycle. Tools like Docker and Vagrant facilitate the creation of SDEs by encapsulating dependencies and system configurations in portable containers or virtual machines. By adhering to a common set of standards and best practices, SDEs mitigate the risk of environment-related bottlenecks and empower developers to focus on coding rather than configuration.

DALL-E | on CDE / RDE / SDEDALL-E | on CDE / RDE / SDE

An implementation approach starts with templating / blueprinting

**A CDEs Template **The template could include configurations for setting up a cloud-based development environment, incorporating cloud-specific tools and services such as AWS CLI, Azure SDK, or Google Cloud SDK. Additionally, it might provide terraform / cloud sdk scripts for provisioning cloud resources and deploying applications seamlessly on cloud platforms.

RDEs Template This template could focus on configuring remote development environments, including settings for accessing and collaborating on projects hosted on remote servers or virtual machines. It might include configurations for SSH keys, remote development extensions for IDEs like Visual Studio Code, and integrations with version control systems for seamless code collaboration.

SDEs Template For standardized development environments, the template could encompass predefined configurations for setting up consistent development environments across teams and projects. It might include Dockerfiles or Vagrantfiles for containerized or virtualized environments, along with scripts for installing dependencies, setting up development databases, and configuring CI/CD pipelines.

Blueprints / Templates — call it what you want, they are the cornerstone of every successful companyBlueprints / Templates — call it what you want, they are the cornerstone of every successful company

By providing templates tailored to each development environment choice, organizations can empower developers to kickstart their projects with minimal setup overhead, enabling them to focus on coding and innovation, there are many templating tools / frameworks out there one I worked with quite a bit is a python package / command line tool named cookiecutter

The journey towards a truly autonomous SDE is ongoing. Companies grapple with the tension between simplicity and flexibility, often oscillating between the allure of serverless architectures and the pragmatism of traditional infrastructure. However, amidst this flux, one thing remains clear: the imperative of delivering faster, without succumbing to the inertia of development overhead.

In conclusion, the Self-Service Development Environment represents a paradigm shift in how we approach software development. By embracing automation, standardization, and self-service principles, we pave the way for a future where developers can focus on what truly matters: bringing ideas to life. Just as a well-oiled assembly line ensures the timely delivery of burgers, so too does an efficient SDE enable teams to ship features with confidence, leaving excuses for delayed deliveries in the annals of history.

comments powered by Disqus

Related Posts

Developing a Webcam Arcade Controller using Deep Learning by TensorFlow & Keras - part 1, Meetup

Developing a Webcam Arcade Controller using Deep Learning by TensorFlow & Keras - part 1, Meetup

We will introduce Deep Learning, demo a DL model in action, introduce an architecture for training and use of such model in a production environment, and show some critical sections of the code. Demo - Control video game using Deep Learning (15 min) - by Haim Cohen, Big Data Architect from Tikal. We will demo an application which makes use of deep learning in order to control a video game through webcam and head gestures. Lectures: Deep Learning - Starting Now (20 min) - by Shai Tal, Data Scientist and Machine Learning Engineer from Tikal. Deep learning is a tool. And tools need to be understood. We will briefly discuss the practical benefits of machine learning over programming, and the benefits of deep learning over classic machine learning for building visualisation and NLP models. Deep Learning API’s & Architecture (30 min) by Haim Cohen. We will Introduce TensorFlow & Keras through code examples, go through main parts of the demo application and talk about the architecture of the demo application and other Deep Learning based systems. DevOps Concerns for Deep Learning Systems (30 min) - by Haggai Philip Zagury, DevOps Architect from Tikal.

Read More
Planning a production ready kubernetes with fundamental Controllers & Operators — Part 5 — Scheduling

Planning a production ready kubernetes with fundamental Controllers & Operators — Part 5 — Scheduling

Originally posted on the Israeli Tech Radar on medium.

TL;DR A brief overview of scheduling in Kubernetes, “the almighty” controller loop, and additional “influencers” that enhance workload management.

Read More
From yak shaving to mastering tasks

From yak shaving to mastering tasks

Originally posted on the Israeli Tech Radar on medium.

TLDR; This is a quick share of a neat tool which found it’s way into my toolset, it did it in such a significant way which enabled me to combine tools in a common way — something I’ve been missing for quite a while. This is also a thank you to the author’s and contributors of go-task which is such an awesome tool.

Read More