Below you will find pages that utilize the taxonomy term “Software Engineering”
The Tech Chorus DevOps Platform
The Tech Chorus DevOps Platform
In the last decade, the way people develop and deploy software has evolved drastically. There is an amalgamation of various sub-disciplines such as
- IT engineering - primarily deals with hardware and networking infrastructure
- System administration - responsible for managing servers in the rack, data center or at a colocation service
- Cloud infrastructure engineering - exclusively manage the infrastructure in the public cloud
- Platform engineering - build and maintain a platform to deploy software applications. Shields the users from the complixity.
All of these sub-disciplene can be called DevOps engineering.
Data Structures And Algorithms
Data Structures And Algorithms
- Data Structures: A data structure is a technique of storing data in a computer so that it can be accessed and modified efficiently.
- Algorithms: An algorithm is a step-by-step instruction to perform a task.
Why Should I Learn Data Structures And Algorithms?
- Enhance your problem solving skills.
- Write efficient code that is performant and scalable.
- Specialized fields: machine learning, data science, artificial intelligence and other engineering fields deal with complex data and require efficient processing. To delve into such fascinating fields of engineering, having a firm grounding in data structures and algorithms is beneficial and in many cases required.
Can I Develop Applications Without Studying Data Structures And Algorithms?
Yes, sure. A lot of applications just store some data in a datastore, typically a relational database and have some procedures to show this data in a user interface, most commonly the web browser. The crux of such applications can be defined using the acronym CRUD. CRUD stands for Create, Read, Update and Delete. Often you are doing one of these CRUD functions in the context of persistent storage of your application:
Ansible Naming Conventions
Purpose Of Having Naming Conventions For An Ansible Project
- Consistency: Adopting a naming convention standardizes naming across the project and organization. This makes it easier for developers to switch between projects. Typically, an organization with an infrastructure team will have several Ansible projects and source code repositories. A developer working on one such Ansible project can seamlessly switch to another given a standard naming convention.
- Error Reduction: With improper naming there can be pitfalls. For instance, using hyphens(
-
) in variable names can cause parsing errors since Ansible might interpret them as the minus operator. Standardizing naming for variables can help avoid collisions. - Readability: With a standard naming convention, it helps developers to find variables, files and tasks quickly.
Naming Conventions For Ansible Roles And Playbooks
- Role name : use lowercase letters and hyphens to separate words: For example,
web-server
ordatabase-backup
. - Task file name: user lowercase letters and underscores to separate words. When statements such as include
are used, it is convenient to have file names without hyphens. For example:
install_web_ubuntu.yml
- YAML file extension:
yml
insteadyaml
. To be consistent and succinct. - Task name: start with a verb: Use an action verb at the beginning of the task name to indicate what the role does. For example, Install Nginx or Configure firewall. Start with a capital letter. No need to end with a period for a few words of task description.
- Variable name: lowercase letters and underscores to separate words. The variable must start with the role
name. For example, if the role name is nginx, the variable name should be
nginx_default_hostname
.
Content Guide
- Always include a README file for the role. Describe in detail how to use the role. Create a table to show the role variables and their defaults.
- Include automated tests using Molecule.
DevOps Lab: Create Your Own Reference Application
A reference application is a sample application that is used as a guide for developers to learn and implement best practices for software development, testing, deployment, and operations within a specific technology stack or framework. It can serve as a blueprint for building and maintaining similar applications and can be used to demonstrate the use of tools, processes, and techniques for achieving high levels of automation, scalability, and reliability.
If you are learning how to deploy applications to Kubernetes of Virtual Machines in cloud, create your own tiny application.
Kubernetes Objects Required For A Typical Web Application: Part II
In the Kubernetes Objects Required For A Typical Web Application post we talked about few Kubernetes objects that a web application developer should get accustomed to. In this post, we will extend the series and talk about more objects that can help web developers scale their applications.
As we delve deeper into Kubernetes topics, the demarcation of roles and skill sets start to reveal. In larger organizations, a dedicated team of infrastructure engineers design and make choices of network topology, IAC tooling and orchestration of the Kubernetes clusters and CI/CD pipelines. Typically, such DevOps engineers manage scaling and storage by installing the required controllers and CSI drivers. Application developers whose applications are deployed on the cluster maybe able to tune certain parameters of certain objects to manage the scaling needs of their applications. Depending on the situation, the developers maybe able to request and use storage volumes with certain restrictions. Regardless of the organization’s team structure, you should be able to learn about these Kubernetes concepts and objects and play with them locally on your laptop using Minikube.
SOPS To Manage Secrets In Git Repositories
In a previous post, we discussed using age
to manage secrets in Git repositories.
In this post, let’s improve our secrets management workflow in Git repositories using SOPS.
sops
is an editor of encrypted files that supports popular configuration formats such as YAML and various encryption
techniques such as age
.
Read the blog post about age
to install the package and creating the key file.
This time, we will use sops
to perform encryption and decryption operations instead of the age
command.
Age To Encrypt Secrets
Are you storing secrets such as database credentials, API keys, etc. unencrypted in Git repositories? Stop.
To protect your secrets, do not store them anywhere unencrypted. Especially in Git repositories. Ideally, your organization must have some vault solution where secrets can be stored and securely shared with people on a need-to-know basis. In many small organizations, having such a central secrets management solution is still a luxury. The need to store such secret information in Git repositories is obvious. There are a few ways in which you can encrypt secrets. We discussed using Ansible Vault in one of the previous blog posts.
Kubernetes Objects Required For A Typical Web Application: Part I
From an application developer and Kubernetes user’s point of view, you have to have a working knowledge of Kubernetes. The post outlines the most important Kubernetes objects required to deploy a typical web application. Let us assume that the web application uses the two-tier architecture. We also assume that the cluster is created and administered by an infrastructure or DevOps engineer and the necessary access is provided to the developer to deploy their web application onto the Kubernetes cluster. The Kubernetes operations are performed from the web application developer’s perspective.
Web Application Ideas Suitable For Beginner Web Developers
The List Of Web Application Ideas
- An e-commerce platform where people can buy and sell products online.
- A platform for booking and managing doctor’s appointments.
- A social networking site for connecting with friends and family.
- A task and project management tool for teams and organizations.
- A recipe and meal planning app for people who want to eat healthy.
- A travel planning and booking app that helps people plan their trips and find the best deals on flights and accommodations.
- An online education platform that offers courses and tutorials on a variety of subjects.
- A fitness and workout tracker that helps users set goals, track their progress, and stay motivated.
- A budgeting and personal finance app that helps people manage their money and save for the future.
- A to-do list and productivity app that helps users organize their tasks and get things done.
Some Common Features Of These Applications
- User accounts and authentication, so users can create an account and log in to the app.
- A user-friendly interface that is easy to navigate and use.
- Search and filtering tools, so users can find what they are looking for quickly and easily.
- Support for different devices and browsers, so users can access the app from any device with an internet connection.
- Social sharing and collaboration features, so users can share content and work together on projects.
- Security measures to protect user data and keep it safe from unauthorized access.
- Analytics and reporting tools to help users track their progress and make data-driven decisions.
- Integration with other tools and platforms, such as payment processors or email marketing services.
- Support for multiple languages and localization, so users can use the app in their native language.
- Responsive design that adjusts to different screen sizes and resolutions, so the app looks good on any device.
Programming Languages, Tools And Technologies
- HTML, CSS, and JavaScript for creating the user interface and front-end of the web application.
- Server-side languages such as Python, Java, or Go for handling the back-end logic and data processing.
- Databases such as MySQL, PostgreSQL for storing and managing data.
- Web frameworks such as Django or
Express.js
for building the application and handling common web development tasks. - Libraries and tools such as ReactJS or Angular for creating interactive and dynamic user interfaces.
- Git for source control.
- Cloud services such as Amazon Web Services or Google Cloud Platform for hosting the application and supporting its infrastructure.
- Payment processing APIs and integrations for enabling transactions and handling payments.
- Email marketing and messaging APIs for sending notifications and updates to users.
- Analytics and tracking tools for gathering data and generating reports.
- Security tools and practices for protecting user data and ensuring the security of the application
References
Database Migrations In A Pluggable Module System Using A Graph Algorithm
In this blog post, I will explain how I implemented a graph algorithm to solve the database migration problem in an application pluggable module system.
Prerequisites:
- Working knowledge of Python
- Working knowledge of Graph Theory. Familiar with the terms: Edge, vertex, path, sink, source, digraph, path graph, etc.
Gavika Web Framework has a pluggable module system. The modules can be developed independently. They can be installed, upgraded and removed from the main application. Gavika Web Framework is written using Python, Flask, SQLAlchemy and a bunch of other related technologies and libraries.
Access Dictionary Keys As Object Attributes
You access Python dictionary keys using the syntax:
my_dicy[my_key]
For example:
>>> my_dict = {'food': 'idly'}
>>> my_dict['food']
'idly'
Sometimes, you might want to access the dictionary keys using:
my_dict.my_key
syntax. If you do this is what happens:
>>> my_dict.food
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'food'
How can you solve this? Easy.
pip install attrdict
How do you use the newly installed package?
>>> from attrdict import AttrDict
>>> my_dict = AttrDict({'food': 'idly'})
>>> my_dict.food
'idly'