Skip to content

Weekly updates in the course DevOps, Software Evolution and Software Maintenance

License

Notifications You must be signed in to change notification settings

simonskodt/itu-minitwit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.