Introduction

Introduction


A motivational story

A design for a up-and-coming unicorn startup
  • Cryptocurrency miner startup!
    • Mine coins!
  • Mining infrastructure:
    • worker, rng, hasher, redis, webui.
Components of a coin mining infrastructure
How does this work?
  • rng produces a constant stream of random bytes
  • worker issues a GET call to rng to acquire a number of random bytes.
  • worker issues a POST call to hasher to hash these bytes.
  • worker updates redis to indicate how many coins (loops) were done.
  • webui queries redis to acquire the rate, then compute and visualize the rate on a web page.
  • This is only the design stage
Connection types between components of a coin mining infrastructure
Commonality
  • This is a common general design for many commercial/production system.
  • Another name: full stack
    • front-end: webui
    • back-end: worker, hasher, rng
    • database: redis

From vision to reality

Implementation stage
  • How does the startup implement their design?
Coin mining infrastructure with updated information on connection and language requirements
Deployment stage
  • Deploy one component per Linux machine!
Coin mining infrastructure with updated information on connection, operating systems, and language requirements
  • Is this really everything?
Reality of deployment in production environment
  • Significant considerations need to be made to selection of hardware (computers and network), software, and other physical limitations (spaces, power, cooling).
    • Differences in software stacks for different components
    • Differences in network security requirements for different computers hosting different components
  • Cost of personnel.
  • True on-site deployment would have hindered many new startups.
What is the reality of deployment of infrastructure with updated information on connection, operating systems, and language requirements
A more complete deployment
  • Companies/businesses are relieved from having to manage both software and physical hardware setup.
  • Hardware configurations are feasible, but physical management is not required.
  • Dynamic scaling of resources
A example of a complete deployment of infrastructure with updated information on connection, operating systems, and language requirements

Cloud Computing is the answer!

What is cloud computing?
A example of a complete deployment of infrastructure with updated information on connection, operating systems, and language requirements in the cloud
  • This cloud model is composed of
    • Five essential characteristics
    • Three service models, and
    • Four deployment models.
NIST: Five essential characteristics of cloud computing
  • C1. On-demand self-service
  • C2. Broad network access
  • C3. Resource pooling
  • C4. Rapid elasticity
  • C5. Measured service
Five essential characteristics of cloud computing
NIST: Enabling technologies (equal order of importance)
  • Broadband networks and Internet architecture
  • Data center technology
  • Virtualization technology
  • Web technology
  • Multi-tenant technology
Enabling technologies for cloud computing

The big picture for this course!

Perceived challenges
Certificate in Cloud Engineering
  • Under Subbacc section for Add/Change Program in RamPortal.
    • Subbacc means that you can get the certificate prior to getting your undergraduate degree.
  • CSC 331: Operating Systems
  • CSC 335: Networking and Data Communications
  • CSC 468: Introduction to Cloud Computing
    • Linux
    • In-depth study on Docker/Docker Compose/CloudLab.
    • In-depth understanding regarding container to container communication
  • CSC 478: Cloud Engineering
    • Kubernetes, CD/CI
Course project and course progress: the big picture
  • Project-driven course
  • General project statement: Enhance the implementation and carry out the full stack deployment of a complex system with multiple components.
  • Throughout the course, you will learn about:
    • Theory behind virtualization.
    • Modern data center technologies.
    • Modern cloud orchestration technologies.
  • Recurrent skills:
    • To be performed in similar way over various problems.
    • Linux-based system administration
    • Git repository.
    • Deploying and managing a cloud infrastructure.
  • Non-recurrent skills (variable-component/open skills):
    • Be able to design a complete micro-service architecture, including components for in-house development/integration.
    • Be able to design and implement individual microservice using appropriate containerization solution.