Skip to content

Latest commit

 

History

History
199 lines (136 loc) · 8.77 KB

File metadata and controls

199 lines (136 loc) · 8.77 KB

GitHub license GitHub Release Date GitHub last commit .NET TypeScript Quality Gate Status Snyk Security Build & Test Continuous Deployment Swarm Deployment

DevOps—Twitter Project

💌 Group k—Radiator Link
Website http://164.92.167.188:3000
Swagger http://164.92.167.188/swagger/index.html
Monitoring and Logging (requires login) http://164.92.167.188:9091
Status on projects http://104.248.134.203/status.html
Weekly commit activity per group http://138.197.185.85/commit_activity_weekly.svg

Contents

Missing Implementations

We currently lack the following features:

  • Deploy to DigitalOcean with Vagrant.
  • Refactor the tests to work with new design.
  • Implement end-to-end tests.
  • Make UML-diagram of system.
  • Add scaling.
  • Use Terraform for IaC.

It would be nice to have the following features:

  • Create automatic releases when merging into main branch.
  • Switching from HTTP To HTTPS.

Weeks

Week 1

Refactor ITU-MiniTwit to work on modern system.

  • 1) Adding Version Control.
  • 2) Try to develop a high-level understanding of ITU-MiniTwit.
  • 3) Migrate ITU-MiniTwit to run on a modern computer running Linux.
  • 4) Share your Work on GitHub.

Week 2

Refactor ITU-MiniTwit in another programming language and tech stack.

  • 1) Refactor ITU-MiniTwit to another language and technology of your choice.
  • 2) Containerize ITU-MiniTwit with Docker.
  • 3) Describe Distributed Workflow, see CONTRIBUTE.md.

Week 3

Continue refactoring, introduction of DB abstraction layer, and deployment of your ITU-MiniTwit to a remote server.

  • 1) Implement an API for the simulator in your ITU-MiniTwit.
  • 2) Continue refactoring of your ITU-MiniTwit.

Week 4

Continue refactoring, Setup CI & CD for reproducible builds, tests, delivery, and deployment.

  • 1) Complete implementing an API for the simulator in your ITU-MiniTwit.
  • 2) Creating a CI/CD setup for your ITU-MiniTwit.
  • 3) Continue refactoring of your ITU-MiniTwit.

Week 5

Cleaning and polishing of your ITU-MiniTwit, introduction of DB abstraction layer, and entering maintenance (Simulator starts).

  • 1) Add missing features.
  • 2) Introduce a DB abstraction layer in your ITU-MiniTwit.

Week 6

Add monitoring to your ITU-MiniTwit and peer-review.

  • 1) Add Monitoring to Your Systems.
  • 2) Software Maintenance II: Check the user interface of another group (Group m, Jason Derulo), see Issue#17.
    • Do you see a public timeline?
    • Does the public timeline show messages that the application received from the simulator?
    • Can you create a new user?
    • Can you login as a new user?
    • Can you write a message?
    • After publishing a message, does it appear on your private timeline?
    • Can you follow another user?

Week 7

Enhancing CI/CD setup with test suite and static code analysis.

  • 1) Add tests to your CI chain (Selenium)
  • 2) Enhance your CI Pipelines with at least three static analysis tools
    • eslint (typescript)
    • codeql (csharp)
    • Snyk (containers)
  • 3) Add Maintainability and Technical Debt estimation tools to your projects
    • Sonarqube
    • Code Climate (hosted from Code Climate, not in GitHub actions)
  • 4) Software Maintenance

Week 8

Add logging to your ITU-MiniTwit.

  • 1) Add Logging to Your Systems
  • 2) Test that Your Logging Works
    • The Devs introduce a bug; the Ops resolve the bug by using the logs.

Week 9

Security Assessment & Pen Testing.

  • 1) Perform a Security Assessment, see SECURITY_ASSESSMENT.md
    • A. Risk Identification
    • B. Risk Analysis
    • C. Pen-Test Your System
  • 2) White Hat Attack The Next Team
    • Group k Radiator -[checks]-> Group m Jason Derulo, see Issue#20.

Week 10

Isolate components into services/containers/VMs.

  • 1) Add Scaling to your projects
  • 2) Rolling Updates
  • 3) Software Maintenance

Week 11

Workshop: How to SSL in front of Docker Swarm.

  • 1) Using LetsEncrypt and Nginx as a reverse proxy.
  • 2) Using Digital Ocean managed load balancers as SSL terminator.

Week 12

Encode your infrastructure setup.

  • Automating also the creation of infrastructure.

Week 13

Course description

As a participant of the DevOps course at the IT University of Copenhagen, we are in for a hands-on learning experience. Every week, we will make changes to a Twitter project to put into practice the concepts and tools that we learn in class. Here is what we will be covering during this course:

  • Bash: We will learn the basics of the shell, navigate the file system, and execute commands.

  • Packaging applications: We will get hands-on experience with packaging applications for distribution and deployment.

  • Containerization: We will learn how to create and manage containers to isolate applications and their dependencies.

  • Virtual Machines: We will explore the use of virtual machines for testing, development, and deployment.

  • CI/CD: We will understand the concepts of Continuous Integration and Continuous Deployment, and implement them using popular tools such as Jenkins and GitLab.

  • Monitoring: We will learn how to monitor the performance of our applications and infrastructure to ensure optimal operation.

  • Maintainability: We will gain insight into making our applications maintainable, and understand the importance of clean code and testing.

  • Log analysis: We will collect and analyze log data to identify and resolve issues in our applications.

  • Web security: We will explore the importance of web security and the measures we can take to protect our applications and users.

  • Scalability: We will understand the concept of scalability and learn how to design and implement scalable applications.

  • Load balancing: We will balance loads across multiple servers to improve performance and reliability.

  • Infrastructure as Code: We will manage and provision infrastructure using code, and understand how this can improve the consistency and reliability of our deployments.

By the end of this course, we will have developed a solid foundation in DevOps concepts and practices, and will have the skills and confidence to build, deploy, and manage applications at scale.