Professional Documents
Culture Documents
201210116038_Report
201210116038_Report
201210116038_Report
clothing shop
A PROJECT REPORT
Submitted by
OM Barvaliya
201210116038
Of
BECHLOR OF
ENGINEERING
In
Information Technology
April, 2024
COMPLATION CERTIFICATE
{gtu_certificate}
CERTIFICATE
Date:
This is to certify that the Working on Cloud, AWS and DevOps with Online clothing
ACKNOWLDEGEMENT
Thank you
OM BARVALIYA
Abstract
The aim of implementing the CI/CD Pipeline for our online clothing store is to
streamline the development and deployment processes, enhancing efficiency and
reliability. The CI/CD Pipeline facilitates automated testing, integration, and
deployment of code changes, ensuring seamless updates to our website. By integrating
CI/CD practices, we aim to optimize the development workflow, allowing for rapid
iteration and delivery of new features and enhancements to our platform.
The CI/CD Pipeline for our online clothing store empowers developers to focus
on coding while automating the tedious tasks of testing and deployment. This approach
not only accelerates the development cycle but also improves the overall quality of our
website by identifying and addressing issues early in the development process.
In conclusion, the CI/CD Pipeline for our online clothing store revolutionizes
our development and deployment practices, fostering innovation and agility while
ensuring the seamless delivery of updates to our customers.
List of Figures
List of Tables
Table Of Content
Acknowledgement………………………………………………………………….…I
Abstract……………………………………………………………………………....II
List of figures………………………………………………………………………...III
List of Tables…………………………………………………………………………IV
1.1 History…………………………………………………………………....1
…...1
2.2 Purpose…………………………………………………………………..3
used…………………………………………………….…5
Chapter 5 Implementation……………………………………………………..…11
Chapter 6 Testing…..……………………………………………………..…….…18
Chapter 7
Conclusion………………………………………………………….….22
Project limitation……………………………………………………..….23
7.4 Future enhancement of project ………………………………………….23
Chapter 8
References………………………………………………………………25
1. HISTORY:
2. DIFFERENT SERVICES
Consulting
Design
Data Handling Management
Management
E-commerce development
Cloud solutions
2. PURPOSE :
3. OBJECTIVE OF INTERNSHIP:
During my internship, my primary objective is to gain hands-on practical
experience in DevOps, applying theoretical knowledge from my studies in a real-world
context. I aim to develop a deeper technical proficiency by working with modern
development tools and technologies such as Python, Django, and various DevOps tools
like Jenkins, Docker, and Kubernetes. This will help me understand the full spectrum of
the software development lifecycle (SDLC), especially how DevOps practices can
streamline and integrate its different stages to enhance agility and responsiveness.I will
also focus on cultivating my problem-solving skills by engaging in troubleshooting and
optimization of software development processes, which are essential for improving
5. TECHNOLOGIES USED:
IDE: VSCode Editor
Python
Django
Java script
AWS CLOUD PROVIDER
Git and Git hub
data storage.
Ensured security best practices were followed to protect data and user privacy.
Documented development processes and updates to maintain a clear and
accessible project history.
3.4 WORKFLOW
Week 1 I familiarized myself with the company and its team members.
Additionally, I acquired knowledge about the concept
of virtualization, enhancing my understanding
of this critical
technological domain.
Week 2 I expanded my technical skills by delving into Linux commands
and shell scripting, which further developed my proficiency in
these essential computing tools.
Register
Add new
Product
Search Admin
Product
User
View
Report
Sign up
Check
Detail
Logout
CHAPTER 5 : IMPLEMETATION
CHAPTER 6 : TESTING
4.Widget Testing: Testing individual Flutter widgets is crucial for ensuring they
perform well within the user interface. Widget testing checks both the visual appearance
and functionality by simulating user interactions and observing the changes in the
application's state and user interface. This helps confirm that widgets are rendered
properly and respond as expected to user inputs.
5.Unit Testing: Unit testing involves verifying the functionality of specific code
components—like functions, methods, or classes—independently from other parts of
the application. By testing these small, isolated pieces of code, developers can ensure
that each component functions correctly under various conditions, laying a solid
foundation for higher-level application reliability and performance.
1. Integration Testing:
intensive. Moreover, widget tests do not evaluate interactions with external services or
the overall application context, which limits their scope.
4. UI Testing:
Advantages: UI testing is vital for ensuring that the application's user interface meets
specified design criteria and functions well across different devices and screen sizes. It
plays a critical role in maintaining a consistent and responsive user experience,
detecting issues related to layout, styling, and accessibility that might affect user
satisfaction.
Limitations: However, UI testing can be complex to implement and maintain,
especially when ensuring compatibility across a wide range of devices. It is also
generally more time-consuming than other types of testing, requiring significant
resources for thorough testing. Furthermore, while UI testing focuses on the surface
elements of the app, it may overlook deeper system-wide functionalities and integration
issues.
5.End-to-End Testing:
Advantages: End-to-end testing provides a comprehensive evaluation of the
application's functionality by simulating real user scenarios and interactions. By
validating the entire flow of the application, from its initiation to completion, it ensures
a seamless user experience. This testing strategy is particularly effective in uncovering
issues related to navigation, state management, and overall application behavior,
helping developers address potential bottlenecks and improve user satisfaction.
Limitations: However, end-to-end testing can be slower and more intricate to set up
compared to other testing methodologies due to its broad scope. It requires meticulous
planning and coordination to cover all possible user scenarios, which can increase the
complexity of test implementation and maintenance. Additionally, this approach may
not always capture issues that arise only in specific environments or edge cases,
potentially leading to undiscovered defects in production.
Component Rendering:
For component rendering, the focus is on ensuring that components render without
errors, all required props are correctly passed, and they display the expected content
based on both props and internal state. This involves thorough testing to validate that
each component appears as intended and functions as expected within the application's
user interface.
User Interactions:
Testing user interactions involves simulating actions such as clicking buttons, typing,
and hovering to validate the responsiveness of the UI. It ensures that components react
appropriately to user input, triggering the expected behavior and visual changes in
response to actions performed by the user.
State Management:
State management testing verifies that components handle state changes correctly,
ensuring that they update their appearance and behavior as expected when internal state
variables are modified. This includes testing scenarios where components re-render in
response to state changes, guaranteeing consistency and accuracy in the application's
display.
Props Handling:
Props handling testing focuses on testing components with various prop configurations
to confirm that they render correctly with different sets of prop values. This involves
validating that components behave as intended when provided with different input data,
ensuring flexibility and robustness in their usage across different contexts.
Async Operations:
Async operations testing involves testing components that perform asynchronous
operations, such as API requests, to ensure they handle loading, errors, and success
responses appropriately. This includes validating that components display loading
indicators during data fetching, handle errors gracefully, and update the UI correctly
upon receiving successful responses from asynchronous operations.
CHAPTER 7 : CONCLUSION
resolution. Additionally, robust version control practices were established, coupled with
automated dependency checks within the CI/CD pipeline to ensure early detection and
resolution of any dependency-related issues. These measures significantly enhanced the
reliability and efficiency of the development workflow, mitigating the impact of
dependency failures on project timelines and productivity.
3. PROJECT LIMITATION
One notable limitation of this project pertains to the exclusive reliance on AWS
CodePipeline for the implementation of the CI/CD pipeline, without incorporating
Jenkins, a widely utilized automation server. The absence of Jenkins potentially restricts
the flexibility and extensibility of the pipeline, limiting the scope for customizations and
integrations with diverse toolsets. Additionally, the project refrained from leveraging
containerization technologies, such as Docker, which could have enhanced portability,
scalability, and consistency in deployment environments. Furthermore, the utilization of
virtual machines for deployment introduces constraints, as it may not offer the
robustness and scalability required for dynamic workload demands. This approach
impedes the ease of scaling server resources, hindering adaptability to fluctuating traffic
patterns. Overall, while the project demonstrated proficiency in utilizing AWS services,
these limitations underscore areas for potential optimization and enhancement in future
deployments.
CHAPTER 8 : REFERENCES
1. https://www.w3schools.com/aws/aws_devops.php
3. https://www.codewithharry.com/blogpost/django-deploy-nginx-gunicorn/
4.Effective DevOps with AWS: Implement continuous delivery and integration in the
AWS environment, 2nd Edition – Yogesh Raheja