Learnings From Module-1
Learnings From Module-1
from
Module-3
B Y A N I R U D H G U P TA
1.Cloud Basics : Aws And Azure
• Cloud computing is a technology model that provides on-demand access to a shared pool of computing resources over
the internet. Instead of owning and maintaining physical servers and infrastructure, businesses can leverage cloud
services to access computing power, storage, and applications as needed. These services are hosted and managed by
third-party providers in data centers, allowing businesses to focus on their core operations without the burden of
managing complex hardware and software. Some of the Cloud service provider are: AWS, Google Cloud, Microsoft Azure,
IBM Cloud, Icloud and many more.
• Amazon Web Services (AWS) and Microsoft Azure are two of the most widely used cloud computing platforms, providing
a variety of services to individuals, businesses, and organizations.
•Overview: AWS is a cloud computing platform provided by Amazon.com. Launched in 2006, AWS is one of the earliest and
most established cloud platforms.
•Global Infrastructure: AWS has a vast global network of data centers, called Availability Zones, located in different
geographic regions. These regions are further divided into Availability Zones to provide redundancy and high availability.
•Pricing Model: AWS operates on a pay-as-you-go pricing model, where users pay for the resources they consume.
•Identity and Access Management (IAM): IAM is a crucial service for managing user access and permissions within AWS.
AWS Top Ten Services:
• Amazon EC2
• Amazon S3
• Amazon RDS
• Amazon Lambda
• Amazon VPC
• Amazon SNS
• Amazon DynamoDB
• Amazon CloudFront
• Amazon IAM
• Amazon SageMaker
Azure is Microsoft’s platform for both hybrid and fully cloud-based IT architectures. The Azure environment is affordable and
infinitely scalable, allowing organizations to invest in the infrastructure they need and pay only for the exact services they
utilize. Microsoft, Azure offers interoperability with the industry’s most popular tools and services.
•Overview: Azure is Microsoft's cloud computing platform, launched in 2010. It provides a wide range of services, similar to
AWS, and integrates well with Microsoft products.
• Global Infrastructure: Azure has a global presence with data centers across various regions and Availability Zones for high
availability.
•Pricing Model: Azure also follows a pay-as-you-go pricing model, allowing users to pay for the resources they consume.
•Identity and Access Management (Azure AD): Azure Active Directory (Azure AD) is used for identity and access
management.
Ecosystem: Azure has a strong integration with Microsoft's software and services, making it a preferred choice for
organizations using Microsoft technologies.
•Azure is like a giant virtual space where you can store your digital stuff and make it do things. Imagine it as a huge
playground of computers, storage spaces, and tools provided by Microsoft. Whether you want a place to keep your files, run
programs, or build websites, Azure has the space and tools you need.
•Azure is a powerful, organized playground in the cloud where you can store, build, and run your digital things with the help of
cool services and tools. It's like having a digital superhero sidekick to keep everything safe and sound.
Common Aspects:
•Hybrid Cloud: Both AWS and Azure offer solutions for hybrid cloud, allowing organizations to integrate on-premises
infrastructure with cloud services.
•Security and Compliance: Both platforms prioritize security and compliance, offering tools and services to help users meet
regulatory requirements.
•Certifications: Both AWS and Azure provide certification programs to validate the skills and knowledge of professionals
working with their platforms.
•Linux has become a versatile and influential operating system, powering a vast array of devices and serving as the
foundation for many other open-source projects and software.
3.Infrastructure as Code Basics
•Infrastructure as Code (IaC) is an approach to managing and provisioning computing infrastructure through machine-
readable script files, rather than through physical hardware configuration or interactive configuration tools. The goal is to
automate and streamline the process of setting up and managing infrastructure, making it more efficient, repeatable, and less
error-prone.
•Infrastructure as code is a mainstream pattern for managing infrastructure with configuration files rather than through a
graphical user interface or through manual command line script sequences. It allows you to build, change, and manage your
infrastructure in a safe, consistent, trackable, and repeatable way by defining resource configurations that you can version (in
a version control system like GitHub), reuse, and share.
Key Concepts:
•Declarative vs. Imperative: IaC can be declarative (specifying the desired end state) or imperative (specifying the steps to
achieve that state). Declarative IaC is more common and emphasizes what the infrastructure should look like rather than how
to get there.
•Idempotence: IaC scripts should be idempotent, meaning that applying the same script multiple times yields the same result
as applying it once. This ensures that the infrastructure remains consistent regardless of how many times the script is
executed.
•Version Control: IaC scripts are typically stored in version control systems (e.g., Git) to track changes, collaborate with a
team, and roll back to previous configurations if needed.
basics of Infrastructure as Code:
Advantages of Test Driven Development(TDD): Methodology of TDD:
•Since we are doing test first, reduction in bugs. •Test First – Code last.
You may not write production code unless you do not
•TDD is used to make the code cleaner, Simple and Bug free. first written a unit test case.
•Test More – Code More.
•Avoids duplication of code. You may not write more of a unit test than is sufficient to
fail.
•Refracting improves the code. •Test Again – Code Again
•TDD drives the code design and approach. You may not write more production code than is
sufficient to make the failing unit test pass.
•Unit test cases are covered early.
•In simple Words, On Demand services provided through internet by cloud computing services.
•Infrastructure as a Service (IaaS): Provides virtualized computing resources, such as virtual machines, storage, and networks,
allowing users to build their own IT infrastructure in the cloud.
•Platform as a Service (PaaS): Offers a platform and tools for application development, deployment, and management, allowing
developers to focus on coding rather than infrastructure.
•Software as a Service (SaaS): Delivers ready-to-use software applications over the internet, eliminating the need for installation,
maintenance, and updates on individual devices.
•On-Premises: Refers to a setup where an organization manages its computing resources, like servers and data storage,
within its own physical location or data center.
Importance of cloud computing in Businesses :
•Cost Efficiency: Eliminates the need for significant upfront capital investment in hardware and infrastructure. Pay-as-you-go
models allow businesses to only pay for the resources they use, optimizing costs.
•Scalability: Easily scales resources up or down to meet changing demands without the need for significant upfront
investments.
•Flexibility and Accessibility: Enables remote access to data and applications, fostering collaboration and supporting a
mobile workforce.
•Reliability and Redundancy: Cloud providers offer robust infrastructure with built-in redundancy, reducing the risk of data
loss and downtime.
•Automatic Updates and Maintenance: Cloud providers handle maintenance, updates, and security patches, ensuring that
businesses always operate on the latest technologies.
•Improved Collaboration: Facilitates real-time collaboration through cloud-based applications, enhancing teamwork and
productivity.
•Data Security: Cloud providers implement advanced security measures, including encryption and access controls, to protect
sensitive business data.
•Disaster Recovery: Offers reliable backup and
recovery solutions, helping businesses recover quickly
from data loss or system failures.
Customer insights can help a company connect with potential customers and get feedback on its products. This can help
companies develop effective marketing and sales strategies.
•Broken Access Control: Website security access controls should limit visitor access to only those pages or sections
needed by that type of user. For example, administrators of an ecommerce site need to be able to add new links or add
promotions. These functions should not be accessible for other types of visitors.
•Cryptographic failures: Data in transit and at rest — such as passwords, credit card numbers, health records, personal
information, and business secrets — require extra protection due to the potential for cryptographic failures (sensitive data
exposures).
•Injection: Injection flaws, such as SQL, NoSQL, OS, and LDAP injection, occur when untrusted data is sent to an interpreter
as part of a command or query. The attacker's malicious data can trick the interpreter into executing unintended commands or
accessing unauthorized data.
•Insecure Design: Insecure design is a wide term that encompasses a variety of flaws and is defined as "missing or poor
control design.“
•Security Misconfigurations: This involves security settings that are not securely configured, including default
configurations, unnecessary services, or incomplete security configurations.
•Vulnerable and Outdated Components: The most effective defense is continuous scanning of all code components for
known vulnerabilities and deploying a patch or other remedy as quickly as possible when a vulnerability is detected .
•Identification and Authentication Failures: When applications incorrectly
execute functions related to session management or user authentication,
intruders may be able to compromise passwords, security keys, or session
tokens and permanently or temporarily assume the identities and permissions
of other users.
•Software and Data Integrity Failures: Code and infrastructure that do not
guard against integrity violations are referred to as software and data integrity
failures. A program that uses plugins, libraries, or modules from untrusted
sources, repositories, or content delivery networks (CDNs) is an example of
this.
•The Sixth task of the assigned module was to run a set of SQL queries on a database using POSTGRESQL.
•For this ,firstly we need to install the latest version of PostgreSQL and do necessary setup.
•The SQL Assignment was divided into 3 different goals. In order to achieve them, I had to learn the basics of POSTGRESQL
so as to perform different functions in it.
•Then I had to import this file data and put this in separate Tables designed according to the schema of the database.
•After the schema was created and data was imported into separate tables from each file, I had the ER diagram generated
based on this.
•All the create table SQL queries are saved in createtable.sql file .
• Dependencies: Explicitly declare and isolate dependencies. Your application should clearly specify and manage its
dependencies, making it easier to reproduce the environment.
• Config: Store configuration in the environment. Configuration settings, such as database credentials or API keys, should be
stored as environment variables rather than hardcoded in the code.
• Backing Services: Treat backing services (databases, queues, etc.) as attached resources. The application should be
designed to connect to backing services through well-defined APIs.
• Build, release, run: Strictly separate the build and run stages of the application. This ensures consistency and
reproducibility across different environments.
• Processes: Execute the app as one or more stateless processes. Applications should be designed to be stateless and
share-nothing, enabling easy scaling and fault tolerance.
• Port Binding: Export services via port binding. The application should export services via a port, making it self-contained
and easily accessible.
• Concurrency: Scale out via the process model. Applications should be designed to scale horizontally by adding more
processes, ensuring better utilization of resources.
•Disposability: Maximize robustness with fast startup and graceful shutdown. Applications should be able to start and stop
quickly, allowing for easy scaling and efficient resource utilization.
•Dev/Prod Parity: Keep development, staging, and production as similar as possible. Minimize the differences between
environments to reduce potential bugs and deployment issues.
•Logs: Treat logs as event streams. Log information should be treated as event streams and pushed to a centralized log
management system for analysis.
• Admin Processes: Run admin/management tasks as one-off processes. Administrative tasks, such as database migrations
or data seeding, should be treated as separate processes and not part of the application code.
Reliability: The 12-factor app principles make it easier to build reliable applications. This is because the principles
decouple the different parts of the application, making it easier to identify and fix problems.
Scalability: The 12-factor app principles make it easier to scale applications. This is because the principles allow you to
easily add new instances of the application, without having to make changes to the codebase.
Deployability: The 12-factor app principles make it easier to deploy applications. This is because the principles decouple
the build, release, and run stages, making it easier to automate the deployment process.
8.Agile Manifesto: Empowering Teams and Delivering Value
•The Agile Manifesto is a set of guiding values and principles for software development that prioritize flexibility, collaboration,
and customer satisfaction. It was created by a group of software developers who met at Snowbird, Utah, in February 2001.
The manifesto is often credited with sparking the widespread adoption of agile methodologies in the software development
industry. The Agile manifesto came with four key values and 12 principles to make software development process more agile.
•Satisfy the customer through early and continuous delivery of valuable software.
•Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive
advantage.
•Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job
done.
•Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a
constant pace indefinitely.
•The best architectures, requirements, and designs emerge from self-organizing teams.
•At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.