Logo

    From PHP to JavaScript to Kubernetes: how backend engineering evolved

    enAugust 23, 2024
    What technologies did Gishan start his career with?
    How did the role of front-end and back-end engineers evolve?
    What are the advantages of using serverless containers?
    What is Google Cloud Run used for?
    Why is incident response important for software resilience?

    Podcast Summary

    • Front-end vs Back-end evolutionThe need for more interactive applications led to the distinction and separation of front-end and back-end technologies in software development.

      The evolution of software development has led to a clear distinction between front-end and back-end technologies. Gishan Manandar, a senior staff engineer at Simply Wall Street, shared his origin story, starting with HTML, CSS, and JavaScript in the early 2000s. He then progressed to formal studies in C++ and Java before moving into PHP, Node.js, and JavaScript for professional work. Gishan's career has taken him across three continents, and he's witnessed the shift from monolithic applications to the SOA and microservices architecture, which introduced the concept of front-end and back-end engineers. In the early days, PHP was the primary tool for building both front-end and back-end, but as interactivity became a priority, the need for separate front-end and back-end technologies emerged. Gishan's experience mirrors this trend. He started using Node.js and TypeScript for back-end development around 2015, while older applications remained in PHP. The shift from having everything in one place to having separate front-end and back-end technologies was driven by the need for more interactive applications and the ability to update parts of the page without requiring a full page refresh.

    • Backend evolutionBackend engineers need to adapt to new technologies and expand their skillset beyond server-side logic to keep up with the evolving web development landscape, while also maintaining a balance between specialization and generalization for effective collaboration in the DevOps environment.

      The role of backend engineers has evolved beyond just handling server-side logic, with the increasing complexity of infrastructure requiring a broader skill set. JavaScript frameworks have emerged to enable dynamic web pages by adding and removing elements without refreshing the page. These frameworks, including early Ajax implementations and modern ones like React and Angular, all aim to streamline the user experience. While this can be a good thing for engineers looking to expand their knowledge, it also necessitates a balance between specialization and generalization. The DevOps movement further emphasizes this need for collaboration and communication between teams, as the code written by software engineers eventually runs on intricate systems like Kubernetes.

    • Incident response in distributed systemsTesting, logging, monitoring, and observability are crucial for identifying and solving issues in distributed systems. Shared responsibility and balanced escalation procedures are essential for effective incident response.

      As a software engineer, being responsible for the software you build and its incident response is crucial for ensuring its resilience. The distributed nature of backend systems can make incident reporting and response more challenging due to the complexity involved. However, it also provides opportunities for learning about other parts of the system and collaborating with other teams. The importance of testing, logging, monitoring, and observability cannot be overstated, as they help in identifying issues and solving problems. Incident response should ideally be a shared responsibility, with a balanced approach to on-call rotations and escalation procedures. The goal is to build and run software with a focus on resilience, ensuring that incidents are minimized and effectively handled when they do occur.

    • Prioritizing precautionsWhen dealing with complex backend systems, prioritize precautions over immediate solutions. Use post-mortem discussions, follow a blameless process, and understand system size and dependencies. Choose the right tools based on requirements and ensure a blameless post-mortem process.

      While dealing with complex backend systems and releases, it's crucial to prioritize precautions over immediate solutions. Post-mortem discussions, following a blameless process, and having a clear understanding of the system's size and dependencies are essential. The choice of language or tool for a task depends on the specific requirements, such as latency sensitivity. Kubernetes, as infrastructure as code, can be complex but also offers benefits, such as creating and managing infrastructure through code execution. It's essential to separate the concepts of infrastructure as code and Kubernetes as a system for container orchestration. Ultimately, the focus should be on using the right tools for the job and ensuring a blameless post-mortem process when issues arise.

    • Docker vs ServerlessFor smaller apps with fewer users, traditional VMs may be suitable. For larger apps with complex systems and high traffic, consider Docker, Kubernetes, or serverless platforms based on resources and team expertise.

      Docker containers and the related technologies like Kubernetes, serverless, and serverless containers, offer significant benefits for managing complex systems at large scales. However, these technologies come with their own complexity and require dedicated teams and resources. Serverless infrastructure, such as function-as-a-service (FaaS), offers the advantages of no infrastructure management, high availability, and pay-per-usage. Containers, on the other hand, provide the flexibility and control of packaging your application and dependencies into a single unit. When considering the use of these technologies, it's important to assess the size and complexity of your user base. For smaller applications with fewer than 100 users a day, traditional virtual machines may still be the most suitable option. However, for larger applications with thousands or even millions of users, container orchestration tools like Kubernetes, serverless platforms, and serverless containers can offer significant benefits. In summary, the decision to adopt container technologies like Docker, Kubernetes, and serverless containers depends on the scale and complexity of your application and the resources available to manage the associated complexity.

    • Serverless containers advantagesServerless containers offer automatic scaling, minimal configuration, and cost efficiency, making them suitable for web apps and smaller teams. Google Cloud Run is an example of a serverless container platform that allows users to configure resources and pay nothing when their app doesn't receive traffic.

      Serverless containers offer advantages such as automatic scaling, minimal configuration, and cost efficiency. They are particularly suitable for web apps and smaller teams, as they eliminate the need for managing infrastructure. Google Cloud Run is an example of a serverless container platform, which allows users to configure CPU, memory, minimum instances, and maximum instances. With serverless containers, users pay nothing when their app doesn't receive traffic, making it a cost-effective solution. The difference between serverless containers and a fully managed Kubernetes platform lies in the level of flexibility and team size. For most apps, serverless containers are sufficient, and they offer the benefits of being highly available and scalable. Nick from Halfbrick Studios, for instance, reported that Cloud Run eliminated the need for an additional DevOps engineer. Furthermore, Google Cloud Run offers jobs for long-running tasks, making it a versatile solution for various use cases. A notable individual who shared valuable knowledge on Stack Overflow was Matthew Reed, who provided an answer to a question about case-sensitive code search on GitHub, earning a populist badge. If you have thoughts, feedback, or show ideas, or if you'd like to be a guest on the podcast, email podcast@stackoverflow.com.

    Recent Episodes from The Stack Overflow Podcast

    The world’s largest open-source business has plans for enhancing LLMs

    The world’s largest open-source business has plans for enhancing LLMs

    Red Hat Enterprise Linux may be the world’s largest open-source software business. You can dive into the docs here.

    Created by IBM and Red Hat, InstructLab is an open-source project for enhancing LLMs. Learn more here or join the community on GitHub.

    Connect with Scott on LinkedIn.  

    User AffluentOwl earned a Great Question badge by wondering How to force JavaScript to deep copy a string?

    The evolution of full stack engineers

    The evolution of full stack engineers

    From her early days coding on a TI-84 calculator, to working as an engineer at IBM, to pivoting over to her new role in DevRel, speaking, and community, Mrina has seen the world of coding from many angles. 

    You can follow her on Twitter here and on LinkedIn here.

    You can learn more about CK editor here and TinyMCE here.

    Congrats to Stack Overflow user NYI for earning a great question badge by asking: 

    How do I convert a bare git repository into a normal one (in-place)?

    The Stack Overflow Podcast
    enSeptember 10, 2024

    At scale, anything that could fail definitely will

    At scale, anything that could fail definitely will

    Pradeep talks about building at global scale and preparing for inevitable system failures. He talks about extra layers of security, including viewing your own VMs as untrustworthy. And he lays out where he thinks the world of cloud computing is headed as GenAI becomes a bigger piece of many company’s tech stack. 

    You can find Pradeep on LinkedIn. He also writes a blog and hosts a podcast over at Oracle First Principles

    Congrats to Stack Overflow user shantanu, who earned a Great Question badge for asking: 

    Which shell I am using in mac?

     Over 100,000 people have benefited from your curiosity.

    The Stack Overflow Podcast
    enSeptember 03, 2024

    Mobile Observability: monitoring performance through cracked screens, old batteries, and crappy Wi-Fi

    Mobile Observability: monitoring performance through cracked screens, old batteries, and crappy Wi-Fi

    You can learn more about Austin on LinkedIn and check out a blog he wrote on building the SDK for Open Telemetry here.

    You can find Austin at the CNCF Slack community, in the OTel SIG channel, or the client-side SIG channels. The calendar is public on opentelemetry.io. Embrace has its own Slack community to talk all things Embrace or all things mobile observability. You can join that by going to embrace.io as well.

    Congrats to Stack Overflow user Cottentail for earning an Illuminator badge, awarded when a user edits and answers 500 questions, both actions within 12 hours.

    Where does Postgres fit in a world of GenAI and vector databases?

    Where does Postgres fit in a world of GenAI and vector databases?

    For the last two years, Postgres has been the most popular database among respondents to our Annual Developer Survey. 

    Timescale is a startup working on an open-source PostgreSQEL stack for AI applications. You can follow the company on X and check out their work on GitHub

    You can learn more about Avthar on his website and on LinkedIn

    Congrats to Stack Overflow user Haymaker for earning a Great Question badge. They asked: 

    How Can I Override the Default SQLConnection Timeout

    ? Nearly 250,000 other people have been curious about this same question.

    Ryan Dahl explains why Deno had to evolve with version 2.0

    Ryan Dahl explains why Deno had to evolve with version 2.0

    If you’ve never seen it, check out Ryan’s classic talk, 10 Things I Regret About Node.JS, which gives a great overview of the reasons he felt compelled to create Deno.

    You can learn more about Ryan on Wikipedia, his website, and his Github page.

    To learn more about Deno 2.0, listen to Ryan talk about it here and check out the project’s Github page here.

    Congrats to Hugo G, who earned a Great Answer Badge for his input on the following question: 

    How can I declare and use Boolean variables in a shell script?

    Battling ticket bots and untangling taxes at the frontiers of e-commerce

    Battling ticket bots and untangling taxes at the frontiers of e-commerce

    You can find Ilya on LinkedIn here.

    You can listen to Ilya talk about Commerce Components here, a system he describes as a "modern way to approach your commerce architecture without reducing it to a (false) binary choice between microservices and monoliths."

    As Ilya notes, “there are a lot of interesting implications for runtime and how we're solving it at Shopify. There is a direct bridge there to a performance conversation as well: moving untrusted scripts off the main thread, sandboxing UI extensions, and more.” 

    No badge winner today. Instead, user Kaizen has a question about Shopify that still needs an answer. Maybe you can help! 

    How to Activate Shopify Web Pixel Extension on Production Store?

    Scaling systems to manage the data about the data

    Scaling systems to manage the data about the data

    Coalesce is a solution to transform data at scale. 

    You can find Satish on LinkedIn

    We previously spoke to Satish for a Q&A on the blog: AI is only as good as the data: Q&A with Satish Jayanthi of Coalesce

    We previously covered metadata on the blog: Metadata, not data, is what drags your database down

    Congrats to Lifeboat winner nwinkler for saving this question with a great answer: Docker run hello-world not working