Learning fundamentals
Tags: devops, learning, beginners
Published: 2023-05-19 01:07:02

Hello!

Journey continues and I've been diving into research of essential topics, from software theory to networking intricacies. Alongside, I've discovered practical websites that can be valuable resources for those seeking additional assistance. Last but not less important, I have been practicing on some small tutorials to learn more about the tech stacks that we talk about in last post.

##Important topics to research

- **Software Development Life Cycle (SDLC):** The Software Development Life Cycle (SDLC) is a systematic approach to software development that ensures the delivery of high-quality software products. It consists of a series of well-defined phases, including requirements gathering, system design, implementation, testing, deployment, and maintenance. Each phase has its specific goals and activities, and following the SDLC helps teams maintain a structured and efficient development process. By adhering to the SDLC, organizations can ensure that software projects are completed on time, within budget, and meet the specified requirements.

---



- **'chmod' and 'chown' Commands in Linux:** In Linux, 'chmod' and 
'chown' are commands used to manage access rights and ownership of files and directories. 
'chmod' (short for "change mode") allows you to modify the permissions granted to users, groups, and others on a file or directory. It controls who can read, write, and execute the file. 
 +'chown' (short for "change owner") enables you to change the ownership of a file or directory, allowing you to transfer ownership between users or groups. Understanding and properly utilizing these commands is essential for managing file permissions and ensuring data security and access control in a Linux environment.

---


- **TCP and UDP Protocols and Commonly Used Ports:** TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) are two core protocols used in computer networks for transmitting data over the Internet. 
TCP is a reliable, connection-oriented protocol that guarantees the delivery of data packets in the order they were sent. 
UDP, on the other hand, is a connectionless protocol that offers faster transmission but does not guarantee the order or reliability of data delivery.

---

- **Database Management Systems:** Can be categorized into Relational DBMS and NoSQL DBMS. 
Relational DBMS, such as MySQL and PostgreSQL, organize structured data into predefined schemas and employ SQL. They excel in maintaining data integrity and are suitable for complex transactions. 
NoSQL DBMS, like MongoDB and Cassandra, handle unstructured and rapidly changing data with flexible schema options. They prioritize scalability and high-performance retrieval. The key difference lies in the data models and trade-offs. 
Relational DBMS suit structured data and complex relationships, while NoSQL DBMS are ideal for unstructured data and scalability. The choice depends on factors like data nature, relationships, performance, and scalability needs. 

---

- **Web Application Frameworks:** Are software frameworks that simplify the development of web applications. They provide tools, libraries, and components for building efficient and structured web applications. 
There are two main types of web application frameworks: server-side (backend) frameworks and client-side (frontend) frameworks. 
Server-side frameworks, like Django, Ruby on Rails, and Express.js, handle the server-side logic of web applications. They manage routing, database integration, session management, authentication, and data processing. These frameworks generate HTML and deliver it to the client browser.
Client-side frameworks, such as React, Angular, Vue.js, and Ember.js, focus on enhancing the user interface and user experience of web applications. They run in the browser and enable dynamic interactions without page reloads. These frameworks handle DOM manipulation, data binding, component management, and state management, facilitating the creation of responsive and interactive user interfaces.

---

- **RESTful API:** Is a widely used concept in web development that enables different applications to communicate and exchange data. It follows a client-server architecture and utilizes standard HTTP methods to perform operations on resources. RESTful APIs promote scalability, modularity, and interoperability, making them essential for building and integrating web applications.

---
- **The OSI (Open Systems Interconnection) model:** Is a conceptual framework consisting of seven layers that define how computer systems should communicate with each other. Each layer has a specific role in the communication process.
Starting from the physical layer, which deals with the transmission of signals, the data link layer ensures reliable transmission between adjacent nodes. The network layer manages routing and addressing across multiple networks, while the transport layer ensures error-free delivery of data.
Above that, the session layer establishes and manages connections, while the presentation layer handles data formatting and encryption. Finally, the application layer provides services and interfaces for end-user applications.

---
- **Load balancing:** Is a technique used to distribute incoming network traffic across multiple servers or resources. It helps optimize resource utilization, improve performance, and ensure high availability of services. There are various load balancing techniques such as round robin, least connections, IP hash, weighted round robin, and least response time. Load balancing can be implemented using hardware or software-based solutions and plays a vital role in optimizing performance and scalability while maintaining reliability.

---

- **DevOps Tooling Solution:**
Jenkins – free and open source automation server used to build CI/CD pipelines.
Kubernetes – an open-source container-orchestration system for automating computer application deployment, scaling, and management.
Jfrog Artifactory – Universal Repository Manager supporting all major packaging formats, build tools and CI servers. Artifactory.
Rancher – an open source software platform that enables organizations to run and manage Docker and Kubernetes in production.
Grafana – a multi-platform open source analytics and interactive visualization web application.
Prometheus – An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
Kibana – Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack.

##Useful websites for learning:

- [Practice VIM Editor](https://www.openvim.com/)
- [Practice SQL](https://www.sql-practice.com/)
- [Practice Javascript](https://www.jschallenger.com/)
- [Practice CSS](https://css-challenges.com/)

---


##Hands on!

I have also documented some basic implementations of tech stack just to get used to the tools:
- [LAMP stack implementation](https://github.com/luismanuu/LAMP-stack-basic-implementation)

- [LEMP stack implementation](https://github.com/luismanuu/LEMP-stack-basic-implementation)

---

##Coming next

In a series of posts, I will implement a completely real-world architecture consisting of the following:

1. Infrastructure: AWS
2. Webserver Linux: Red Hat Enterprise Linux 8
3. Database Server: Ubuntu 20.04 + MySQL
4. Storage Server: Red Hat Enterprise Linux 8 + NFS Server
5. Programming Language: PHP
6. Code Repository: GitHub
7. Load Balancing
8. DevOps Tool