Instantly Run An App in the Cloud

From Foss2Serve
Revision as of 17:51, 30 July 2015 by Nyeates (Talk | contribs)
Jump to: navigation, search
Title Instantly Run An App in the Cloud Using OpenShift
Overview Students need to know what Cloud Computing really means, how it fits into the wider computing context, and how they can use an open source cloud alternative to quickly host coding platforms for them to toy around in. This activity sets out to do all of this as a walkthrough learn-as-you-go tutorial.
Prerequisite Knowledge Command line skills and Beginner Git experience (git activity 1)
Learning Objectives
  • Understand what Cloud / Utility Computing is
  • Be able to quickly spin up an app in an online PaaS environment
  • Learn the context of SSH and URLs and components of online applications

WordpressOpenShift.png

Background:

What is the rational for this activity?

Students need to know what Cloud Computing really means, how it fits into the wider computing context, and what the different types are (IaaS, PaaS, SaaS). Students can dig into PasS, as a powerful development platform - and understand how quickly, easily, and powerfully they can spin up new applications. Gone are the days of having to setup a physical server, know the details on how to setup the OS, fiddle with the kernel, setup web-servers (Apache), databases (Postgres, Mysql), and middle-ware micros-services (AMQP Message busses, JBoss Fuse, Apache Camel). In a PaaS environment like OpenShift, the developer just fires up an instance of whatever pieces they want, and start coding. Seriously - its that easy. Of course, the developer has to know how to develop in said language or platform, but it makes development considerably easier by removing focus from lower layers. Basically, those lower layers (most mentioned above) are automated away by the PaaS platform.


We need an activity that can show students, step-by-visual-step, how to start up a new coding environment and actually code a small chunk of working software on Openshift. Make it something sexy, like Node.js. Make it an effective piece of code (contact someone within red hat for advise) and it would be even more amazing.

Background readings:


Directions:

You may have heard of Software as a Service (SaaS), or Cloud Computing before. Examples of SaaS are that of Google Docs, Twitter, DropBox. Another flavor of Cloud Computing is Platform as a Service (PaaS). This cloud-hosted service allows developers to program apps and functionality in an easy to grasp and scale and demo online environment. You can push stuff live very quickly, and you dont have to worry about backup or the Operating System, or getting database services running. Your infrastructure and coding platform are pre-taken-care-of. You just code your app. Lets go signup for one and start a simple blog app.

Overview

Here are the major steps you will implement:




Get OpenShift Online account

One such PaaS provider (amongst many) is Red Hats OpenShift. Other examples are Heroku, Google AppEngine, Engineyard, Microsoft Azure, VMWare's CloudFoundry. The list goes on. However, one of the cool things bout OpenShift is that its open sourced. You will remain free to move your code and environment to other vendors within OpenShift. Say that Red Hat starts charging too much - many vendors can be implementing the same environment,allowing you to easily move (at least, more easily than proprietary solutions). Alternatively, you could take OpenShifts code and implement your own PaaS server, on your computer at home. Only those whose source code is open sourced can claim this.

SignupOpenShift.png

Quick Setup

  • Login to OpenShift Online
  • Click on the Settings tab on the webpage
  • Fill in the Namespace field
    • This will define the URL that you and others will visit to see your live apps that your create.
    • So, for example, we enter "teachingoss" and our URLs will be something like:
http://wordpress-teachingoss.rhcloud.com/

OpenShiftSettings.png

  • Public Keys, for now, we will leave blank
    • If you know what a public key is, and you have one on your existing machine, go ahead and enter it here
    • This will allow you to extremely easily access the SSH command line of your virtual app
    • We will touch on it in a later activity


Quick Win - Start Wordpress

Implement phpmyadmin

Setup OpenShift

URL
SSH setup

https://developers.openshift.com/en/managing-remote-connection.html#keys

Rhc setup

https://developers.openshift.com/en/getting-started-osx.html#client-tools


Deliverables:

What will the student hand in?


Assessment:

How will the activity be graded?

How will learning will be measured?

Include sample assessment questions/rubrics.

Criteria Level 1 (fail) Level 2 (pass) Level 3 (good) Level 4 (exceptional)
The purpose of the project
Why the project is open source

Comments:

What should the instructor know before using this activity?

What are some likely difficulties that an instructor may encounter using this activity?


Additional Information:

Knowledge Area/Knowledge Unit What ACM Computing Curricula 2013 knowledge area and units does this activity cover? ACM_Body_of_Knowledge
Topic What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf
Level of Difficulty Is this activity easy, medium or challenging?
Estimated Time to Completion How long should it take for the student to complete the activity?
Materials/Environment What does the student need? Internet access, IRC client, Git Hub account, LINUX machine, etc.?
Author Who wrote this activity?
Source Is there another activity on which this activity is based? If so, please provide a link to the original resource.
License Under which license is this material made available? (http://creativecommons.org/licenses/)


Suggestions to Open Source Mentors:

Suggestions for an open source community member who is working in conjunction with the instructor.



This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

CC license.png

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox