Tuesday, May 2, 2023

Back-end Development Overview

 

Keywords: Software development, Back-end development, software developer, Backend Developer, Server-side Languages, Programming language, Server, Database, API, Logic, Compilers, Workspace, Software development Models, Software Architectures, Software Design methodologies, Client-Side Technologies, Web Server, Web Security, Web development, Skills, Responsibilities, Tools

·        Back-end development

o   refers to the server-side of Software development focusing on everything that happens behind the scenes of Software or System or Application or website.

o   responsible for handling these major components: Server, Database, API and Logic.

o   involves handling user authentication, authorization, and processing user requests.

·        A Backend Developer

o   Backend developer is a software developer who specializes in the design, implementation, and maintenance of the server-side logic that powers applications.

o   ensure the software or website performs correctly, focusing on databases, back-end logic, application programming interface (APIs), architecture, and servers.

o   focuses on creating and maintaining the server-side components of web applications.

o   Primarily tasked with developing server-side APIs, handling database operations, and ensuring that the backend can manage high traffic volumes efficiently

o   On a team, back-end developers collaborate with front-end developers to build the structure of software or system or mobile app.

o   While Backend Developers get started, first they pick a Server-side Programming language and its Ecosystem, choose Workspace such as Code editors or IDE’s and configure version control and Repo Hosting

o   A Backend Developer Should have knowledge of Software development Model, Software Architectures, Client-Side Technologies, Software Design methodologies, Web Server and Web Security.

·        Knowledge of Software development Models including Sequential models (e.g. waterfall and V-model), and Iterative and incremental models (e.g. spiral model and Unified Process), Also have knowledge of Agile Software Development Methodologies and DevOps practices.

·        Knowledge of Software Architectures such as: Domain Driven Design, Event Driven Architecture, SOA Design Concepts with N Layered Architecture, Aspect Oriented Architecture, Model-View-Controller (MVC), Model-View-View Model (MVVM), Cloud Application Architecture, Monolithic and Microservices Architecture. And so on. 

·        Knowledge of Software Design methodologies such as: Object Oriented Design and SOLID Design Principles. And so on.

·        Knowledge of Client-Side Technologies including Web Technologies such as HTML, CSS and JavaScript.

·        Knowledge of Web Server

o   Web servers run websites, stores, processes, and deliver (response) web pages to the user’s request.

o   When the user makes a request by the web server, it is accepted by an HTTP server which finds and sends back the content to the browser through HTTP.

o   Some examples of web servers are IIS, Apache and NGINX

·        Knowledge of Web Security

o   Various threats can attack a website which could result in its poor performance.

o   Web security refers to the protective measures and protocols developers should follow to build an optimized and effective website.

o   It includes scanning a website for vulnerabilities to defend against thefts or loss that occurs due to digital hackers.

o   Types of Risks developers face could be malware, backlisting, buffer overflow, and sensitive data exposure.

o   Various techniques can be followed to avoid such issues: Using HTTPS, implementing secure backup and recovery and various other methods include XSS Attacks, Software updates, and SQL Injection.

o   HTTPS is a secured HTTP. When data is sent using HTTPS, it is protected via the Transport Layer Security protocol, which has three layers of protection: Encryption, Data Integrity and Authentication

·        Back-end Development Skills include:

o   Proficiency in Server-side Languages

o   Proficiency in Backend Frameworks

o   API Design and Development

o   Database Management

o   Unit Testing

o   Version Control

o   Containerization

o   Continuous Integration and Deployment (CI/CD).

o   Cloud development

o   Security Awareness

·        Key Responsibilities of Backend Developer include:

o   Writing clean and maintainable code for server-side application logic.

o   Designing and implementing scalable and performant databases.

o   Integrating user-facing elements developed by front-end developers with server-side logic.

o   Creating and maintaining APIs to allow the front-end system to communicate with the backend services.

o   Ensuring system consistency and availability with robust architecture and efficient code.

o   Managing hosting environments, including database administration and scaling applications to handle load changes.

o   Implementing security and data protection measures to safeguard the application.

o   Developing data storage solutions and managing data access and retrieval.

o   Optimizing the application for maximum speed and scalability.

o   Keeping abreast of emerging technologies and applying them to operations and activities.

·        Backend Developer Tools can be categorized as:

o   Code Editors

o   Server-side Languages Compilers

o   Integrated Development Environments (IDEs)

o   Shell Scripting and package manager's tools

o   Backend Frameworks

o   API tools

o   Database Management Systems (DBMS)

o   Unit test frameworks

o   Version control systems

o   Containers

o   CI/CD tools

o   Cloud platforms.

·        Backend development popular tools:

o   Server-side Languages: C#, Java, Python and so on.

o   IDE's tools: Visual Studio, Visual Studio Code, IntelliJ IDEA and so on.

o   Shell Scripting and package manager's tools: PowerShell, Bash, npm, yarn

o   Backend Frameworks: .NET Frameworks, ASP.NET, Express.js, Django and so on.

o   API may include: Web services or Web APIs

o   DBMS: SQL Server, MySQL, Oracle, PostgreSQL and so on.

o   Unit Test frameworks: NUnit, TestNG, Chai/Mocha and so on.

o   Version Control systems and Hosting services: Git, GitHub, Bitbucket and so on.

o   Containers: Docker, Kubernetes and so on.

o   CI/CD tools: Azure DevOps, Jenkins, GitHub Actions and so on.

o   Cloud platforms: MS Azure, AWS, Google Cloud and so on.

·        Web development terminology: