<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssmetkar</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssmetkar"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ssmetkar"/>
	<updated>2026-06-30T22:27:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82381</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82381"/>
		<updated>2013-11-10T02:30:35Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)      After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)      When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Steps to Run and Test the Project'''&lt;br /&gt;
&lt;br /&gt;
Go to application URL :  https://sahanaeden.herokuapp.com/eden/default/index. &lt;br /&gt;
It will bring you to the application`s main page. We need to test the Map feeds functionality for which follow the   following steps:&lt;br /&gt;
&lt;br /&gt;
1)      Login  (A user has been created with email ID : sarangmetkar@gmail.com and password : sarang).&lt;br /&gt;
&lt;br /&gt;
2)      Go to URL https://sahanaeden.herokuapp.com/eden/msg/index which is the index page for Messaging feature.&lt;br /&gt;
&lt;br /&gt;
3)      A twitter account is configured to fetch the tweets using Twitter API. On the left you will find a heading called Twitter Search. There are two actions you can perform viz. Search Queries and Result.&lt;br /&gt;
&lt;br /&gt;
4)      Search Queries - It shows the list of keywords for which you want to search your Twitter account.You can add new search query. For adding new tweets, enter the keyword and select Search after Save check box.&lt;br /&gt;
&lt;br /&gt;
5)	Result - It shows a list of tweets consisting of the searched tweets in a table. To view the tweets on Map go to following URL: https://sahanaeden.herokuapp.com/eden/msg/twitter_result/map.&lt;br /&gt;
&lt;br /&gt;
6)      You can also view the searched tweets results by clicking on 'Map' menu in the top. URL is : https://sahanaeden.herokuapp.com/eden/gis/index. You can see the different layers, one of which is 'Tweets'. When you select the 'Tweets' option, it shows all the tweets on the Map.&lt;br /&gt;
&lt;br /&gt;
7)      For viewing the content in 'Summary View' we have to change the template to 'CRMT'  which is done at configuration level. Please refer below to understand more about 'Summary View'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82380</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82380"/>
		<updated>2013-11-10T02:23:08Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)      After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Steps to Run and Test the Project'''&lt;br /&gt;
&lt;br /&gt;
Go to application URL :  https://sahanaeden.herokuapp.com/eden/default/index. &lt;br /&gt;
It will bring you to the application`s main page. We need to test the Map feeds functionality for which follow the   following steps:&lt;br /&gt;
&lt;br /&gt;
1)      Login  (A user has been created with email ID : sarangmetkar@gmail.com and password : sarang).&lt;br /&gt;
2)      Go to URL https://sahanaeden.herokuapp.com/eden/msg/index which is the index page for Messaging feature.&lt;br /&gt;
3)      A twitter account is configured to fetch the tweets using Twitter API. On the left you will find a heading called Twitter Search. There are two actions you can perform&lt;br /&gt;
        a) Search Queries : 1) It shows the list of keywords for which you want to search your Twitter account.&lt;br /&gt;
		            2) You can add new search query. For adding new tweets, enter the keyword and select Search after Save check box.&lt;br /&gt;
        b) Result : It shows a list of tweets consisting of the searched tweets in a table. To view the tweets on Map go to following URL: https://sahanaeden.herokuapp.com/eden/msg/twitter_result/map.&lt;br /&gt;
&lt;br /&gt;
4)      You can also view the searched tweets results by clicking on 'Map' menu in the top. URL is : https://sahanaeden.herokuapp.com/eden/gis/index. You can see the different layers, one of which is 'Tweets'. When you select the 'Tweets' option, it shows all the tweets on the Map.&lt;br /&gt;
5)      For viewing the content in 'Summary View' we have to change the template to 'CRMT'  which is done at configuration level. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82379</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82379"/>
		<updated>2013-11-10T02:20:25Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)      After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Steps to Run and Test the Project'''&lt;br /&gt;
&lt;br /&gt;
Go to application URL :  https://sahanaeden.herokuapp.com/eden/default/index. &lt;br /&gt;
It will bring you to the application main page. We need to test the Map feeds functionality for which follow the   following steps:&lt;br /&gt;
&lt;br /&gt;
1)      Login  (A user has been created with email ID : sarangmetkar@gmail.com and password : sarang). &lt;br /&gt;
&lt;br /&gt;
2)      Go to URL https://sahanaeden.herokuapp.com/eden/msg/index which is the index page for Messaging feature.&lt;br /&gt;
&lt;br /&gt;
3)      A twitter account is configured to fetch the tweets using Twitter API. On the left you will find a heading called Twitter Search. There are two actions you can perform&lt;br /&gt;
        a) Search Queries : 1) It shows the list of keywords for which you want to search your Twitter   				    account. &lt;br /&gt;
		            2) You can add new search query. For adding new tweets, enter the keyword and 				     select Search after Save check box.&lt;br /&gt;
        &lt;br /&gt;
        b) Result : It shows a list of tweets consisting of the searched tweets in a table. To view the tweets on     Map go to following URL: https://sahanaeden.herokuapp.com/eden/msg/twitter_result/map.&lt;br /&gt;
&lt;br /&gt;
4)      You can also view the searched tweets results by clicking on 'Map' menu in the top. URL is : https://sahanaeden.herokuapp.com/eden/gis/index. You can see the different layers, one of which is 'Tweets'. When you select the 'Tweets' option, it shows all the tweets on the Map.&lt;br /&gt;
&lt;br /&gt;
5)      For viewing the content in 'Summary View' we have to change the template to 'CRMT'  which is done at configuration level. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82378</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82378"/>
		<updated>2013-11-10T02:18:42Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)      After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Steps to Run and Test Project'''&lt;br /&gt;
&lt;br /&gt;
Go to application URL :  https://sahanaeden.herokuapp.com/eden/default/index&lt;br /&gt;
It will bring you to the application main page. We need to test the Map feeds functionality for which follow the   following steps:&lt;br /&gt;
&lt;br /&gt;
1)      Login  (A user has been created with email ID : sarangmetkar@gmail.com and password : sarang). &lt;br /&gt;
2)      Go to URL https://sahanaeden.herokuapp.com/eden/msg/index which is the index page for Messaging feature.&lt;br /&gt;
3)      A twitter account is configured to fetch the tweets using Twitter API. On the left you will find a heading called Twitter Search. There are two actions you can perform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        a) Search Queries : 1) It shows the list of keywords for which you want to search your Twitter   				    account. &lt;br /&gt;
		            2) You can add new search query. For adding new tweets, enter the keyword and 				     select Search after Save check box.&lt;br /&gt;
        &lt;br /&gt;
        b) Result : It shows a list of tweets consisting of the searched tweets in a table. To view the tweets on     Map go to following URL: https://sahanaeden.herokuapp.com/eden/msg/twitter_result/map.&lt;br /&gt;
&lt;br /&gt;
4)      You can also view the searched tweets results by clicking on 'Map' menu in the top. URL is : https://sahanaeden.herokuapp.com/eden/gis/index. You can see the different layers, one of which is 'Tweets'. When you select the 'Tweets' option, it shows all the tweets on the Map.&lt;br /&gt;
5)      For viewing the content in 'Summary View' we have to change the template to 'CRMT'  which is done at configuration level. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82377</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82377"/>
		<updated>2013-11-10T02:15:21Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Steps to Run and Test Project'''&lt;br /&gt;
&lt;br /&gt;
Go to application URL :  https://sahanaeden.herokuapp.com/eden/default/index&lt;br /&gt;
It will bring you to the application main page. We need to test the Map feeds functionality for which follow the   following steps:&lt;br /&gt;
&lt;br /&gt;
1) Login  (A user has been created with email ID : sarangmetkar@gmail.com and password : sarang) &lt;br /&gt;
2) Go to URL https://sahanaeden.herokuapp.com/eden/msg/index which is the index page for Messaging feature.&lt;br /&gt;
3) A twitter account is configured to fetch the tweets using Twitter API. On the left you will find a heading called Twitter Search. There are two actions you can perform&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   a) Search Queries : 1) It shows the list of keywords for which you want to search your Twitter   				    account. &lt;br /&gt;
		       2) You can add new search query. For adding new tweets, enter the keyword and 				     select Search after Save check box.&lt;br /&gt;
        &lt;br /&gt;
   b) Result : It shows a list of tweets consisting of the searched tweets in a table. To view the tweets on     Map go to following URL: https://sahanaeden.herokuapp.com/eden/msg/twitter_result/map.&lt;br /&gt;
&lt;br /&gt;
4) You can also view the searched tweets results by clicking on 'Map' menu in the top. &lt;br /&gt;
 URL is : https://sahanaeden.herokuapp.com/eden/gis/index. You can see the different layers, one of which is 'Tweets'. When you select the 'Tweets' option, it shows all the tweets on the Map.&lt;br /&gt;
5) For viewing the content in 'Summary View' we have to change the template to 'CRMT'  which is done at configuration level. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82376</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=82376"/>
		<updated>2013-11-10T02:10:26Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Technical Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81959</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81959"/>
		<updated>2013-10-31T02:08:30Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Shana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
'''Directory Structure'''&lt;br /&gt;
&lt;br /&gt;
After the installation, the typical directory structure of the instance&lt;br /&gt;
looks like: &lt;br /&gt;
[[Application_structure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81951</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81951"/>
		<updated>2013-10-31T02:02:55Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Shana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
'''Directory Structure'''&lt;br /&gt;
&lt;br /&gt;
After the installation, the typical directory structure of the instance&lt;br /&gt;
looks like: &lt;br /&gt;
[[Application_structure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary View Table'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png | thumb ]]&lt;br /&gt;
&lt;br /&gt;
'''Summary View Map'''&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81943</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81943"/>
		<updated>2013-10-31T01:59:51Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Shana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
'''Directory Structure'''&lt;br /&gt;
&lt;br /&gt;
After the installation, the typical directory structure of the instance&lt;br /&gt;
looks like: &lt;br /&gt;
[[Application_structure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Summary View'''&lt;br /&gt;
In order to view the twitter search results in Summary View, we need to make configuration level changes. The application running on Heroku has the 'default' theme and the Summary View can be obtained only when the 'CRMT' theme is selected. A screen shot of 'Summary View' has been added below for testing.&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot_Summary_Table.png | 200px ]]&lt;br /&gt;
[[File:ScreenShot_Summary_Map.png]]&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShot_Summary_Map.png&amp;diff=81937</id>
		<title>File:ScreenShot Summary Map.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShot_Summary_Map.png&amp;diff=81937"/>
		<updated>2013-10-31T01:58:08Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShotSummaryTable.png&amp;diff=81922</id>
		<title>File:ScreenShotSummaryTable.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShotSummaryTable.png&amp;diff=81922"/>
		<updated>2013-10-31T01:55:02Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShot_Summary_Table.png&amp;diff=81917</id>
		<title>File:ScreenShot Summary Table.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ScreenShot_Summary_Table.png&amp;diff=81917"/>
		<updated>2013-10-31T01:53:56Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81884</id>
		<title>CSC/ECE 517 Fall 2013/oss mapFeeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_mapFeeds&amp;diff=81884"/>
		<updated>2013-10-31T01:47:09Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Map Feeds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters. It is an open source software platform which provides a range of solutions for Disaster Management practitioners to help them reduce the impact disasters have on our communities through tracking the needs of the affected populations &amp;amp; coordinating the responding agencies &amp;amp; their resources.It can be accessed from the web or locally from a flash&lt;br /&gt;
drive, allowing it to be used in environments with poor internet. Local &amp;amp; Web versions can be configured to synchronize to allow data to be&lt;br /&gt;
shared between them. These features are designed to help Disaster Management practitioners to better mitigate, prepare for, respond to and recover from disasters more effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
Sahana Eden is designed to be rapidly configured and customized to support the diverse business processes used within Disaster Management. Sahana Eden's modular design allows different pieces of functionality to be enabled and disabled as required providing flexible solutions for changing contexts. The application can be configured to secure sensitive information, while also making data which needs to be shared available in a variety of different formats including Microsoft Excel and PDF. To ensure that Sahana Eden is accessible to every country, it can be translated into multiple languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Core modules and outlines==&lt;br /&gt;
&lt;br /&gt;
'''Organization Registry'''&lt;br /&gt;
&lt;br /&gt;
Many diverse organizations are involved in Disaster Management, from responding to disasters to strengthening communities to providing support to people in need. Sahana Eden’s Organization Registry can track what organizations are active in different contexts, providing opportunities for collaboration and coordination.&lt;br /&gt;
&lt;br /&gt;
'''Project Tracking'''&lt;br /&gt;
&lt;br /&gt;
By telling you Who’s Doing What, Where, and When, Sahana Eden provides a valuable tool to help organizations responding to disasters know where the greatest needs are and coordinate with others who are engaged in similar work.&lt;br /&gt;
&lt;br /&gt;
'''Human Resources'''&lt;br /&gt;
&lt;br /&gt;
The most important part of Disaster Management is the people.Whether they are community volunteers or staff working for different organizations, the Human Resources module can help manage the people involved. It will track where they are, what skills they have and help ensure that everyone is effectively engaged with the work that needs to be done. Sahana Eden can also be used to provide a contact list to ensure that the right people can be contacted at the right time. &lt;br /&gt;
&lt;br /&gt;
'''Inventory'''&lt;br /&gt;
&lt;br /&gt;
Whether organizations are supplying basic essentials of life to people&lt;br /&gt;
affected by natural disasters or giving communities the tools they&lt;br /&gt;
need to restore their livelihoods, Sahana Eden can be used to manage&lt;br /&gt;
inventories of items and match requests for items with warehouses&lt;br /&gt;
and other facilities which have them available. Operationally, Sahana&lt;br /&gt;
Eden can be used to record and automate transactions for sending&lt;br /&gt;
and receiving shipments. Sahana Eden can support multiple Catalogs of&lt;br /&gt;
Items as well as providing alternative items to ensure more effective&lt;br /&gt;
use of supplies. Sahana Eden can be configured to load multiple&lt;br /&gt;
catalogs including a generic list of items and/or the IFRC Emergency&lt;br /&gt;
Item Catalog.&lt;br /&gt;
&lt;br /&gt;
'''Assets'''&lt;br /&gt;
&lt;br /&gt;
A wide range of assets are needed to respond to disasters, including&lt;br /&gt;
vehicles to transport people and relief items, radio equipment to&lt;br /&gt;
provide communication where telecommunication infrastructure has&lt;br /&gt;
been destroyed, and generators to provide backup power. Sahana&lt;br /&gt;
Eden is able to manage assets, track where they are, who they have&lt;br /&gt;
been assigned to, and what condition they are in. This ensures that&lt;br /&gt;
assets are used effectively and efficiently.&lt;br /&gt;
&lt;br /&gt;
'''Assessments'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be used to collect and analyze information from&lt;br /&gt;
assessments to help organizations more effectively plan their disaster&lt;br /&gt;
management activities. Different assessment templates can easily be&lt;br /&gt;
designed and imported into Sahana Eden to support assessments for&lt;br /&gt;
different organizations in different contexts. Data can either be&lt;br /&gt;
entered into an interactive web form or imported via an Excel&lt;br /&gt;
template.&lt;br /&gt;
&lt;br /&gt;
'''Scenarios and Events'''&lt;br /&gt;
&lt;br /&gt;
To help organizations better plan for disasters, Sahana Eden can be&lt;br /&gt;
used to plan for different scenarios, including recording what human&lt;br /&gt;
resources, assets, facilities and tasks will be needed to effectively&lt;br /&gt;
respond.&lt;br /&gt;
When an incident occurs events can be created from a scenario&lt;br /&gt;
template to allocate the resources and alert people of the need to&lt;br /&gt;
respond.&lt;br /&gt;
&lt;br /&gt;
'''Map'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden has fully integrated mapping functionality which allows&lt;br /&gt;
any location-based data to be visualized on a map. This information&lt;br /&gt;
can also be searched using a map-based boundary selection. Maps&lt;br /&gt;
provide situational awareness which is essential when either planning to&lt;br /&gt;
prepare for or respond to a disaster. Sahana Eden supports many&lt;br /&gt;
standard formats for overlaying data on maps from other sources&lt;br /&gt;
and Geographical Information Systems (GIS), for example natural&lt;br /&gt;
hazard risks, population or weather.&lt;br /&gt;
&lt;br /&gt;
'''Shelter Management'''&lt;br /&gt;
&lt;br /&gt;
When disasters are widespread and result in population displacement,&lt;br /&gt;
understanding and tracking the landscape of shelters - and the people&lt;br /&gt;
in them - is a critical activity. The Shelter Registry provides&lt;br /&gt;
functionality to list and track information on shelters and on the&lt;br /&gt;
people arriving and departing. Shelter details include location, services&lt;br /&gt;
provided, responsible organization and contacts, demographics, and&lt;br /&gt;
needs. In addition, individual person data includes name, age, relatives,&lt;br /&gt;
status, health, and many other details to provide a clear understanding&lt;br /&gt;
of population demographics within the site.&lt;br /&gt;
&lt;br /&gt;
'''Messaging'''&lt;br /&gt;
&lt;br /&gt;
In the complex domain of Disaster Management, communication is&lt;br /&gt;
critical. Sahana Eden provides support for messages to be sent&lt;br /&gt;
by Email, SMS, Twitter and Google Talk. Distribution Groups can be set&lt;br /&gt;
up to allow messages to be easily sent to many people at once. Users&lt;br /&gt;
are able to search for specific information and subscribe to receive&lt;br /&gt;
update messages when new information is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical Overview==&lt;br /&gt;
&lt;br /&gt;
Because Sahana Eden needs to be accessible to users at remote&lt;br /&gt;
locations, including the public, a browser-based solution was essential.&lt;br /&gt;
The system also needs to be able to be used on offline laptops, so it&lt;br /&gt;
needs to run on a lightweight stack.&lt;br /&gt;
&lt;br /&gt;
Python was selected as a suitable high level language allowing the rapid&lt;br /&gt;
customization of code required for each individual circumstance yet&lt;br /&gt;
has a large number of powerful libraries available including for&lt;br /&gt;
Geospatial Information Systems (GIS).&lt;br /&gt;
&lt;br /&gt;
'''Shana Eden Framework'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden Software Platform has been built around a Rapid&lt;br /&gt;
Application Development (RAD) Framework. This provides a high level&lt;br /&gt;
of automation to ensure that new solutions can be quickly and&lt;br /&gt;
effectively developed. Once a database table is defined, the Sahana&lt;br /&gt;
Eden Framework automatically generates HTML pages to handle CRUD&lt;br /&gt;
(Create, Read, Update, Delete) as well as Search, Map and Pivot&lt;br /&gt;
Reports. Web Services are available to import and export in XML, CSV,&lt;br /&gt;
JSON and EXtensible Stylesheet Language (XSL) transforms are&lt;br /&gt;
supported to produce other data standards.&lt;br /&gt;
&lt;br /&gt;
'''Sahana Eden Architecture'''&lt;br /&gt;
&lt;br /&gt;
Web Server: Apache. Other web servers can also be used,such as Cherokee.&lt;br /&gt;
&lt;br /&gt;
Application: Sahana Eden&lt;br /&gt;
&lt;br /&gt;
Web Application Framework: Web2Py&lt;br /&gt;
&lt;br /&gt;
Programming Language: Python &amp;amp; JavaScript&lt;br /&gt;
&lt;br /&gt;
Database: MySQL,PostgreSQL, or MySQL, PostgreSQL, and SQLite are supported. Other databases should be usable without major additional work &lt;br /&gt;
since Web2Py supplies many connectors.&lt;br /&gt;
&lt;br /&gt;
Operating System: Linux (Debian recommended),Windows and Mac OS X are possible, but only recommended for single-user environments.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Sahana Eden can be installed on any environment which can run&lt;br /&gt;
Python, including Linux, Windows and OSX. The system supports a&lt;br /&gt;
number of different databases and has been widely tested on MySQL,&lt;br /&gt;
PostgreSQL and SQLite. A webserver is optional, but for production&lt;br /&gt;
installations we have experience of both Apache/mod_wsgi and&lt;br /&gt;
Cherokee/uwsgi.&lt;br /&gt;
&lt;br /&gt;
Installation scripts and detailed instructions are available on the Wiki:&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Web2py'''&lt;br /&gt;
&lt;br /&gt;
This is an  MVC environment (like  Rails &amp;amp;  Django.).&lt;br /&gt;
Web2Py can work at several different levels of abstraction.&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.&lt;br /&gt;
Can execute a controller to be able to access its functions using:&lt;br /&gt;
execfile(&amp;quot;applications/eden/controllers/mycontroller.py&amp;quot;, globals())&lt;br /&gt;
&lt;br /&gt;
'''S3'''&lt;br /&gt;
&lt;br /&gt;
The Sahana Eden framework (S3) is built on Web2Py and It is used for RAD in all the sahana applications. The Sahana api docs can be found at http://eden.sahanafoundation.org/wiki/DeveloperGuidelines&lt;br /&gt;
&lt;br /&gt;
'''Directory Structure'''&lt;br /&gt;
&lt;br /&gt;
After the installation, the typical directory structure of the instance&lt;br /&gt;
looks like: &lt;br /&gt;
[[Application_structure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Social Media==&lt;br /&gt;
Social Media is playing a important role in Disaster and Emergency Management, for such things as:&lt;br /&gt;
&lt;br /&gt;
- Sending warnings and emergency instructions to the public.&lt;br /&gt;
&lt;br /&gt;
- Receiving help requests and incident reports from the public.&lt;br /&gt;
&lt;br /&gt;
- Engaging with the public, encouraging preparedness, providing information.&lt;br /&gt;
&lt;br /&gt;
- Detecting incidents not directly reported. f&lt;br /&gt;
&lt;br /&gt;
==Map Feeds==&lt;br /&gt;
This project allows the user to add layers of Geo-tagged data from Twitter onto the Map. It searches for tweets with specific keywords (that can be configured by user on Sahana web page). It then plots the location of these tweets on the Map. This is the work that we have done as a part of our project implementation. The following steps are involved in this:&lt;br /&gt;
&lt;br /&gt;
After setting up Eden in the system twitterSearch library(https://pypi.python.org/pypi/TwitterSearch/) is to be installed which helps to fetch the tweets with specific keywords&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Searching Tweets'''&lt;br /&gt;
&lt;br /&gt;
- Configuring twitter account:&lt;br /&gt;
&lt;br /&gt;
Sign into  https://dev.twitter.com and create an app. (Select an application Type: Client). Put the Callback URL as blank and create your own Twitter application. After creating an app on twitter account, you will be able to see a tab called OAuth tool. Open eden/models/000_config.py file. Under Twitter Settings, add consumer_key and consumer_secret obtained from the twitter app's OAuth tool. Edit the following lines in 000_config.py&lt;br /&gt;
     settings.msg.twitter_oauth_consumer_key = &amp;quot;&amp;lt;consumer key from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
     settings.msg.twiiter_oauth_consumer_secret = &amp;quot;&amp;lt;consumer_secret from twitter app&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- Add keywords to be searched:&lt;br /&gt;
&lt;br /&gt;
Go to a page eden/msg/twitter_search. You can add keywords / search queries records under this page. It will ask you for a PIN to enter before saving the keywords/queries. The pin is obtained from Twitter app that was created.&lt;br /&gt;
&lt;br /&gt;
- Populating database with search results:&lt;br /&gt;
&lt;br /&gt;
After saving the keywords/ queries, click on Results which triggers the search and msg_twitter_search_results table in the database gets populated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Processing Tweets'''&lt;br /&gt;
&lt;br /&gt;
After fetching the twitter feeds, the Geo-tagged tweets are processed. They are parsed to fetch user information, tweet data and location information in terms of latitude and longitude. All this information then goes into the msg_twitter_search_results table.&lt;br /&gt;
&lt;br /&gt;
'''Plotting tweets on Map'''&lt;br /&gt;
&lt;br /&gt;
To display tweets on map, a new layer named &amp;quot;Twitter&amp;quot; is added under the overlays section on the map page. When a user selects this option, the location ids from the msg_twitter_search_results are fetched and a marker is displayed on those locations. Clicking on the marker image displays additional tweet information such as content, time and user info.&lt;br /&gt;
&lt;br /&gt;
'''Our Tasks'''&lt;br /&gt;
&lt;br /&gt;
1)	After fetching the twitter feeds, process the geo-tagged data in tweets and store in a different table with a foreign key reference in twitter search result table.&lt;br /&gt;
&lt;br /&gt;
2)	To display the tweets on a map, for which a new layer “Twitter” is added under the overlays section on map page.&lt;br /&gt;
&lt;br /&gt;
3)	To display the twitter search result in “Summary View”. The Summary view provides a consolidate view of the data and provides tabs for Map, Table and Charts.&lt;br /&gt;
&lt;br /&gt;
4)  When the tweets are displayed on Map, the data associated with the tweets needs to be displayed.&lt;br /&gt;
&lt;br /&gt;
==Future Scope==&lt;br /&gt;
&lt;br /&gt;
1. Major limitation is that the twitter search keyword is hard coded.We need to make the code access the msg_twitter_search table and use the keywords stored by the user through the GUI to search and display twitter feeds on the GIS map.&lt;br /&gt;
&lt;br /&gt;
2. Display twitter icon on map instead of the normal location bubble.&lt;br /&gt;
&lt;br /&gt;
3. Work on the pop-up contents. Ideally this would include any photo or video linked in the message (or a URL if it's to a page of text).   Actually doing the part within the tweet parsing of following embedded URLs to identify if they're Media would be really useful addition to the parser (there is a commented-out stub).&lt;br /&gt;
&lt;br /&gt;
4. Create a cron job, to search tweets periodically and not only at user's request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/InstallationGuidelines&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/S3&lt;br /&gt;
&lt;br /&gt;
http://eden.sahanafoundation.org/wiki/Book&lt;br /&gt;
&lt;br /&gt;
http://en.flossmanuals.net/sahana-eden/why-sahana-eden/&lt;br /&gt;
&lt;br /&gt;
https://pypi.python.org/pypi/TwitterSearch/&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79098</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79098"/>
		<updated>2013-09-25T02:16:25Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
It is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant etc. by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;br /&gt;
==Terminology==&lt;br /&gt;
#'''Polyglot platform''': A development/deployment platform which supports multiple language.&lt;br /&gt;
#'''CLI''' : Command Line Interface&lt;br /&gt;
#'''Saas''' : Software-as-a-Service&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79097</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79097"/>
		<updated>2013-09-25T02:15:16Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
It is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;br /&gt;
==Terminology==&lt;br /&gt;
#'''Polyglot platform''': A development/deployment platform which supports multiple language.&lt;br /&gt;
#'''CLI''' : Command Line Interface&lt;br /&gt;
#'''Saas''' : Software-as-a-Service&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79096</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79096"/>
		<updated>2013-09-25T02:13:51Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Terminology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
It is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;br /&gt;
==Terminology==&lt;br /&gt;
#'''Polyglot platform''': A development/deployment platform which supports multiple language.&lt;br /&gt;
#'''CLI''' : Command Line Interface&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79094</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79094"/>
		<updated>2013-09-25T02:12:52Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Procfile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
It is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;br /&gt;
==Terminology==&lt;br /&gt;
#Polyglot platform: A development/deployment platform which supports multiple language.&lt;br /&gt;
#CLI :&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79092</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79092"/>
		<updated>2013-09-25T02:11:30Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;br /&gt;
==Terminology==&lt;br /&gt;
#Polyglot platform: A development/deployment platform which supports multiple language.&lt;br /&gt;
#CLI :&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79088</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79088"/>
		<updated>2013-09-25T02:06:28Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives a detailed description of their architecture and makes a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79086</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79086"/>
		<updated>2013-09-25T02:05:00Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article gives description about the popular Ruby web hosting services,specifically Heroku and Engine Yard. It gives an overview about their respective architecture and a comparison between the two on different factors. &lt;br /&gt;
&lt;br /&gt;
===Web Hosting Services===&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79080</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79080"/>
		<updated>2013-09-25T02:00:40Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million ,Tech Crunch,2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook &amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79079</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79079"/>
		<updated>2013-09-25T01:59:23Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million Tech Crunch, 2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo ,Venture Beat, 2009-10-14&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558 , Developers (weblog), Facebook&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79077</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79077"/>
		<updated>2013-09-25T01:57:16Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million Tech Crunch, 2008-05-08&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79069</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79069"/>
		<updated>2013-09-25T01:48:15Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Differences between Heroku and Engine Yard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dashboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79067</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79067"/>
		<updated>2013-09-25T01:47:06Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecturehttps://www.engineyard.com/products/technology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&amp;lt;br&amp;gt;&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79066</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79066"/>
		<updated>2013-09-25T01:46:25Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecturehttps://www.engineyard.com/products/technology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&lt;br /&gt;
[[File: Pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Pc-iaas.png&amp;diff=79065</id>
		<title>File:Pc-iaas.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Pc-iaas.png&amp;diff=79065"/>
		<updated>2013-09-25T01:42:57Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: Architecture of Engine Yard environment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Architecture of Engine Yard environment&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79064</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79064"/>
		<updated>2013-09-25T01:41:37Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecturehttps://www.engineyard.com/products/technology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&lt;br /&gt;
[[File:/home/siddhivinayak/Desktop/pc-iaas.png]]&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79063</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79063"/>
		<updated>2013-09-25T01:40:37Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecturehttps://www.engineyard.com/products/technology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment :-&lt;br /&gt;
![Alt text](/home/siddhivinayak/Desktop/pc-iaas.png)&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79061</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79061"/>
		<updated>2013-09-25T01:32:39Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecturehttps://www.engineyard.com/products/technology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A high level architecture of Engine Yard environment:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79057</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79057"/>
		<updated>2013-09-25T01:27:08Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79054</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79054"/>
		<updated>2013-09-25T01:24:36Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;br /&gt;
# In order to understand about what more you can expect from Heroku, read an interesting article [http://http://news.rapgenius.com/Jesper-joergensen-routing-performance-update-lyrics#note-1508469 here]&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79050</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79050"/>
		<updated>2013-09-25T01:18:17Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby Getting started with Ruby]. It provides simple explanation for deploying your first application on Heroku&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79046</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=79046"/>
		<updated>2013-09-25T01:17:11Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
# To start working on Heroku for deploying your Ruby web application refer  [http://https://devcenter.heroku.com/articles/getting-started-with-ruby]. It provides simple explanation for deploying your first application on Heroku&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=76793</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=76793"/>
		<updated>2013-09-17T15:53:39Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows to collate system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==Engine Yard==&lt;br /&gt;
Engine Yard is a private company providing cloud Platform as a Service and focuses on deployment and management of a Ruby and Rails application. It provides a pay-as-you-go pricing policy so you pay only for what you use. It helps developers with learning resources like videos, tutorials for Ruby development. It provides user with a GUI for the configuration, deployment and maintenance of an application.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://www.engineyard.com/products/technology&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Engine Yard Could platform comprises of following layers.&lt;br /&gt;
====Infrastructure as a Service====&lt;br /&gt;
Engine Yard is built on top of Amazon Web Services. The IaaS layer takes care of creating managing and running instances created by user on AWS. When a user requests for an environment the Engine Yard Cloud boots a new AWS instance and this instance is configured with the application code and required platform components.&lt;br /&gt;
====Components available====&lt;br /&gt;
It provides components like application framework, application server, web server, load balancer, caching mechanisms, databases and virtual machines. It also provides some run-time components like libraries, frameworks and services.&lt;br /&gt;
====Automation Engine====&lt;br /&gt;
Engine Yard automates and manages various operations and tasks like Component Automation, System Automation and Lifecycle Automation. This layer provides the automated load balancing, resource monitoring and fault tolerance.&lt;br /&gt;
====Add-ons====&lt;br /&gt;
Engine Yard provides add-ons for extending applications and environments. It has a Gateway layer that enables the third party integration with ease. It has partnered with a variety of companies - leading vendors and SaaS providers, providing users with a wide range of options for Add-ons.&lt;br /&gt;
&lt;br /&gt;
===Features&amp;lt;ref&amp;gt;https://www.engineyard.com/products/cloud/features&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Open platform''': Engine yard components are based on open source technologies providing user a highly configurable and flexible platform for deployment. It offers a wide range of configuration choices for Ruby and Rails application:&lt;br /&gt;
 App Servers supported: Passenger, Puma, Trinidad, Unicorn.&lt;br /&gt;
 Web Servers: HAProxy, Nginx, Rack.&lt;br /&gt;
 Databases: MySQL, PostgreSQL, Riak.&lt;br /&gt;
 Ruby Versions: 1.9.3-p448 1.9.2-p320, 1.8.7-p374&lt;br /&gt;
#'''Flexible''':Engine Yard Cloud can be used in a variety of fields like gaming and entertainment, e-commerce, online portals and social networking.&lt;br /&gt;
#'''Accessibility made easy with both CLI and a user friendly interface''':Engine Yard provides with a GUI Dashboard for managing deployments and creating instances. Deployment can be done from master branch or another branch and code can be deployed with migrations too. The Dashboard shows the deployment status. All this functionality can be done using a Command Line Interface also, which needs to be installed.&lt;br /&gt;
#'''Controlling Instances and Scaling''':Engine Yard gives user the complete control of instances to the user. Instances can be created easily using the dashboard. When a user requests for an environment, a fresh AWS instance (virtual machine) is created and configured with the user's application code and the platform components the user configured. This helps user to add instances easily to your application tier that will join the load-balanced group.&lt;br /&gt;
#'''Database replication''':User can configure multiple database setups. For e.g. master databases can be created on both PostgreSQL and MySQL. Additionally, slave databases can also be created.&lt;br /&gt;
#'''Monitoring resources''':With Engine Yard Cloud user can track all the essential resource utilization for an application like storage, CPU and memory utilization levels.&lt;br /&gt;
#'''Cloning''':Cloning enables a user to have an on-demand staging environment. The complete production environment can be cloned even when the application is running across many different instances.&lt;br /&gt;
#'''Handling Fail-overs''': Engine Yard maintains a master instance and slave instance of the database. If some failure is detected in the master database i.e its unable to respond to the requests, then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
&lt;br /&gt;
===Steps for deployment&amp;lt;ref&amp;gt;http://guides.railsgirls.com/engineyard/&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Deployment can be done from the master branch, with migrations or from another branch in GIT repository using the Dashboard&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21016418-Deploy-from-Your-Dashboard&amp;lt;/ref&amp;gt; or CLI&amp;lt;ref&amp;gt;https://support.cloud.engineyard.com/entries/21009927-Deploy-from-the-CLI-Engine-Yard-CLI-User-Guide-&amp;lt;/ref&amp;gt;&lt;br /&gt;
#To deploy a user must create an account on Engine Yard.&lt;br /&gt;
#User must have an application on his/her account.&lt;br /&gt;
#User must create an environment by entering details like environment name, ruby version being used in the application, database type, no of backups and snapshots t be maintained.&lt;br /&gt;
#The GIT branch from which code is to be deployed (master or other) can be mentioned on the Dashborad.&lt;br /&gt;
#Click on the deploy button to deploy the application.&lt;br /&gt;
#The deployment status (successful/failed) will be shown once the deployment is completed.&lt;br /&gt;
&lt;br /&gt;
For deployment using the CLI:&lt;br /&gt;
#The engineyard gem must be installed in the local environment on user's development machine using the command&lt;br /&gt;
 gem install engineyard&lt;br /&gt;
# The application can then be deployed by traversing to the application directory and typing the command&lt;br /&gt;
 ey deploy (The environment can be given using the -e option if user has multiple environments i.e ey deploy -e production)&lt;br /&gt;
# The check the status of an application and environment following command can be used&lt;br /&gt;
 ey status&lt;br /&gt;
# The get help for a specific command use&lt;br /&gt;
 ey help COMMAND_NAME&lt;br /&gt;
&lt;br /&gt;
==Differences between Heroku and Engine Yard==&lt;br /&gt;
&lt;br /&gt;
#'''Web application instance creation:''' In case of Heroku, every procces that needs to be run i.e web process or worker process its runs on different Dynos. In case of Engine Yard, user is provided with a separate AWS instance that acts your environment where you can deploy your web aplication and run different components.&lt;br /&gt;
#'''Languages supported:''' Heroku is a polygot platform which supports different frameworks/languages like Clojure, Scala, Java, Ruby and Node.js. Engine Yard supports interpreters like Ruby, PHP, Node.js, REE, JRuby and Rubinius.&lt;br /&gt;
#'''Operating System:''' Heroku uses Debian version of Linux while Engine Yard uses Gentoo version of Linux.&lt;br /&gt;
#'''Fault Tolerance:''' Since the application runs on different Dynos which are physically distributed hence if any of the Dyno goes down/fails the other is present to take over the control. Engine Yard allows cloning of environments and automatically creates snapshots and backups of application and databases. It maintains a master instance and slave instance of the database. If some failure is detected in the master database then it terminates this instance and the slave is converted into master and a new slave instance is created for later use.&lt;br /&gt;
#'''Scalability:''' Heroku has a Dyno Manager which manages the different running instances of Dynos. Initially only one Dyno is allocated to a process but it can be scaled by adding more Dynos in the Procfile or by increasing the Dyno size. The available Dyno sizes are 1X and 2X. Engine Yard allows a user to add additional instances that join the load balancing group.&lt;br /&gt;
#'''Logging:''' Heroku provides the feature of Logplex which collates and distributes log entries from your app and other components of the Heroku platform. Logging in case of Engine Yard is application specific.&lt;br /&gt;
#'''Monitoring and alerting:''' Engine Yard allows a user to track and monitor the utilization of each resource including storage, CPU and alerts when additional capacity is needed, or when the application may be behaving poorly. Heroku has a web inetrface called as Heroku Dashboard through which you can view the applications deployed to Heroku and the resources/Dynos allocated to it, but it doesn't provide functionality for performance monitoring and tracking CPU utilization.&lt;br /&gt;
#'''User Interface:''' Engine Yard provides a user interface 'Dahsboard' for application deployment and management along with a CLI. Heroku however allows for an application deployment and management only through CLI.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75652</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75652"/>
		<updated>2013-09-15T06:04:52Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* How Heroku Works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works&amp;lt;ref&amp;gt;https://devcenter.heroku.com/articles/how-heroku-works&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75651</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75651"/>
		<updated>2013-09-15T06:01:47Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Heroku */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku&amp;lt;ref&amp;gt;https://devcenter.heroku.com&amp;lt;/ref&amp;gt;==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture&amp;lt;ref&amp;gt;https://devcenter.heroku.com/categories/heroku-architecture&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75650</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75650"/>
		<updated>2013-09-15T05:52:20Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* How Heroku Works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#'''Knowing what to execute''': If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#'''Deploying application''': The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#'''Building an application''': When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#'''Running application on Dynos''':Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75649</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75649"/>
		<updated>2013-09-15T05:51:19Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#'''Polyglot development environment''': Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#'''Dyno Size selection''': Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#'''Flexibility in PaaS plan''': The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
    Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
    1X	        512MB	1x	   $0.05&lt;br /&gt;
    2X	        1024MB	2x	   $0.10&lt;br /&gt;
    Resize with command:&lt;br /&gt;
    $ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#'''Production check''': Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#'''Fault tolerant''': Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#'''Wide Range of databases supported''': Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#'''Availability of add-ons''':Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#'''SSL Endpoints''': Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#'''Ease in scalability''':  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#'''Error Pages''':Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#'''Logging ease with Logplex''':Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#'''Custom domain''':All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#'''Maintenance Mode''':If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#'''One-off dynos''':One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#'''Configuration and config-var''':An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75648</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75648"/>
		<updated>2013-09-15T05:47:05Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#Polyglot development environment: Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#Dyno Size selection: Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#Flexibility in PaaS plan: The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
1X	        512MB	1x	   $0.05&lt;br /&gt;
2X	        1024MB	2x	   $0.10&lt;br /&gt;
Resize with command:&lt;br /&gt;
$ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#Production check: Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#Fault tolerant: Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#Wide Range of databases supported: Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#Availability of add-ons:Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#SSL Endpoints: Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#Ease in scalability::  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#Error Pages:Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#Logging ease with Logplex:Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#Custom domain:All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#Maintenance Mode:If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#One-off dynos:One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#Configuration and config-var:An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75647</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75647"/>
		<updated>2013-09-15T05:45:32Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
===Features===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
#Polyglot development environment: Heroku uses Celadon cedar ,a polyglot platform with native support for different language/framework like Clojure, Scala, Java, Ruby and Node.js. Polyglot support at the platform level lets development teams effectively utilize many languages across - and within - projects and ensures the right tool for the job.&lt;br /&gt;
#Dyno Size selection: Heroku dynos get 512MB of memory and 1x CPU share in their default configuration (“1X”). If your app needs more memory or more CPU share, you can resize dynos to a “2X” configuration for double the memory and double the CPU share on a per process-type basis.&lt;br /&gt;
#Flexibility in PaaS plan: The cost of hosting application depends upon the number and size of dynos used for running the application. The rates are as follows :&lt;br /&gt;
Dyno Size	Memory CPU Share  Price/dyno-hour&lt;br /&gt;
1X	        512MB	1x	   $0.05&lt;br /&gt;
2X	        1024MB	2x	   $0.10&lt;br /&gt;
&lt;br /&gt;
Resize with command:&lt;br /&gt;
$ heroku ps:resize web=2X worker=1X&lt;br /&gt;
#Production check: Production Check tests your app’s configuration against a set of optional—but highly recommended—criteria. It makes it easy to ensure that your app’s configuration lends itself to maximum uptime. To run Production Check, click the “Run Production Check” link in the header for any app in the Heroku Dashboard.&lt;br /&gt;
#Fault tolerant: Since the application runs on different dynos which are located on physicially distributed environment, the application becomes fault tolerant. If two web dynos are running and due to catastrophic event any of the dyno goes down, the request for that application can be handled by other dyno.&lt;br /&gt;
#Wide Range of databases supported: Heroku provides support for wide range of database along with the default PostgreSQL like Amazon RDS, MongoDB, Cloudant by purchasing add-ons.&lt;br /&gt;
#Availability of add-ons:Heroku provides add-ons for catering different requirements for running an application. Some of the available add-ons provides with functionality like monitoring, search utilities, caching, analytics, email and sms, logging etc.&lt;br /&gt;
#SSL Endpoints: Apps that transmit sensitive data should enable SSL to ensure all information is transmitted securely.&lt;br /&gt;
To enable SSL on a custom domain, Heroku provides SSL Endpoint add-on.&lt;br /&gt;
#Ease in scalability::  The Procfile exposes an architectural aspect of your application and this architecture lets you, for example, scale each part independently. Generally, if you deploy an application for the first time, Heroku will run 1 web dyno automatically. In other words, it will boot a dyno, load it with your slug, and execute the command you’ve associated with the web process type in your Procfile.You have control over how many dynos are running at any given time. All apps on Heroku use a process model (via Procfile) that lets them scale up or down instantly from the command line or Dashboard. Each app has a set of running dynos, managed by the dyno manager, which are known as its dyno formation.&lt;br /&gt;
#Error Pages:Heroku’s HTTP router serves unstyled HTML with HTTP status code 503 (Service Unavailable) when your app encounters a system-level error, or while maintenance mode is enabled. Customizing these pages allows you to present a more consistent UI to your users.&lt;br /&gt;
#Logging ease with Logplex:Logplex collates and distributes log entries from your app and other components of the Heroku platform.It allows collates system error logs and warnings. Even though the application runs in distributed environment the logplex makes log access easier.&lt;br /&gt;
#Custom domain:All apps on Heroku are accessible via their herokuapp.com app subdomain. E.g., for an app named example it’s available at example.herokuapp.com. To serve traffic on a non-herokuapp.com domain, e.g., www.example.com, you can configure your application with a custom domain.&lt;br /&gt;
#Maintenance Mode:If you’re deploying a large migration or need to disable access to your application for some length of time, you can use Heroku’s built in maintenance mode. It will serve a static page to all visitors, while still allowing you to run one-off dynos.&lt;br /&gt;
#One-off dynos:One-off dynos run attached to your terminal and work similar to other dynos, with a character-by-character TCP connection for STDIN and STDOUT. This allows you to use interactive processes like a console.&lt;br /&gt;
#Configuration and config-var:An open source app may have hundreds or thousands of deployments.Although all running the same code, each of these deploys have environment-specific configurations. Heroku provides solution is to use environment variables, and keep the keys out of the code.Use the Heroku CLI’s ''config'', ''config:set'', ''config:get'' and ''config:unset'' to manage your config vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75628</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75628"/>
		<updated>2013-09-15T03:57:13Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75627</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75627"/>
		<updated>2013-09-15T03:56:34Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75626</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75626"/>
		<updated>2013-09-15T03:55:57Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75625</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75625"/>
		<updated>2013-09-15T03:55:34Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
----&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75624</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75624"/>
		<updated>2013-09-15T03:54:18Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started. All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
====Slug====&lt;br /&gt;
A slug is a bundle of your source, fetched dependencies, the language runtime, and compiled/generated output of the build system - ready for execution.&lt;br /&gt;
----&lt;br /&gt;
===How Heroku Works===&lt;br /&gt;
Running an application on Heroku involves following points&lt;br /&gt;
#Defining an application: The source code for your application, together with the dependency file, should provide enough information for the Heroku platform to build your application, to produce something that can be executed.&lt;br /&gt;
#Knowing what to execute: If you’re using some established framework, Heroku can figure it out. For example, in Ruby on Rails, it’s typically ''rails server'' and in Node.js it’s the ''main field'' in ''package.json''. If you want to execute some other process as well declare it in Procfile.&lt;br /&gt;
#Deploying application: The Heroku platform uses git as the primary means for deploying applications.&lt;br /&gt;
When you create an application on Heroku, it associates a new git remote, typically named heroku, with the local git repository for your application.As a result, deploying code is just the familiar git push, but to the heroku remote instead :&lt;br /&gt;
   $ git push heroku master&lt;br /&gt;
#Building an application: When the Heroku platform receives a git push, it initiates a build of the source application. The build mechanism is typically language specific, but follows the same pattern, typically retrieving the specified dependencies, and creating any necessary assets.&lt;br /&gt;
#Running application on Dynos:Heroku executes applications by running a command you specified in the Procfile, on a dyno that’s been preloaded with your prepared slug.&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75612</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75612"/>
		<updated>2013-09-15T03:29:35Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
====Procfile====&lt;br /&gt;
A Procfile is a text file named Procfile placed in the root of your application, that lists the process types in an application. Each process type is a declaration of a command that is executed when a dyno of that process type is started.&lt;br /&gt;
All the language and frameworks on the Cedar stack declare a web process type, which starts the application server. Rails 3 has the following process type :&lt;br /&gt;
    web: bundle exec rails server -p $PORT&lt;br /&gt;
    web:     node web.js&lt;br /&gt;
    worker:  node worker.js&lt;br /&gt;
    reports: node report.js&lt;br /&gt;
    General command &lt;br /&gt;
    &amp;lt;process-type&amp;gt; : &amp;lt;command&amp;gt;&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75611</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75611"/>
		<updated>2013-09-15T03:15:19Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* Process Type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command. A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile.&lt;br /&gt;
&lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75610</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75610"/>
		<updated>2013-09-15T03:15:04Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: /* The Process Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. The process model is a generalized approach to managing processes across a distributed environment. It allows you to specify a custom list of process types in a Procfile and provides for very granular management of an application’s components.&lt;br /&gt;
&lt;br /&gt;
====Process Type====&lt;br /&gt;
A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile. &lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75608</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w30 ps</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w30_ps&amp;diff=75608"/>
		<updated>2013-09-15T03:12:52Z</updated>

		<summary type="html">&lt;p&gt;Ssmetkar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ruby on Rails Web Hosting Services =&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
A web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. Typically, while hosting web applications, it becomes essential to host the core website component, databases and other resources necessary for running the application. There are many web hosting options available like free web hosting, shared hosting, dedicated server, and the list goes on. Today, many companies provide services for hosting web application where they manage the infrastructure along with maintenance and the application developer needs to focus only on the actual application development. The service charges depend upon the factors like disk space, bandwidth, email account or FTP access. Nowadays, many companies provide [http://en.wikipedia.org/wiki/Platform_as_a_service Platform-as-a-Service](PaaS) to deploy and scale applications in Cloud.&lt;br /&gt;
&lt;br /&gt;
==Some popular PaaS providers are:==&lt;br /&gt;
&lt;br /&gt;
* '''[http://aws.amazon.com Amazon Web Service]'''&lt;br /&gt;
Not a platform in the traditional sense, Amazon's AWS Elastic Beanstalk changes how developers push their apps into Amazon's &lt;br /&gt;
cloud. Developers upload the app and Elastic Beanstalk handles the deployment details, capacity provisioning, load balancing, &lt;br /&gt;
auto-scaling and app health monitoring.&lt;br /&gt;
* '''[https://www.heroku.com Heroku]'''&lt;br /&gt;
Heroku is a cloud platform as a service (PaaS) supporting building, deployment and scaling of applications using several programming languages like Ruby, Java, Python,Node.js ,Clojure, PHP and Perl. &lt;br /&gt;
* '''[https://www.engineyard.com Engine Yard]'''&lt;br /&gt;
Engine Yard's platform offers simple, automated Rails deployment and management that makes for easy app migration.&lt;br /&gt;
* '''[https://developers.google.com/appengine Google App Engine]'''&lt;br /&gt;
The developer platform that lets users build and host Web apps in the cloud in an effortless fashion.&lt;br /&gt;
* '''[http://www.gridgain.com GridGain]'''&lt;br /&gt;
Open-source cloud application platform helps developers build scalable applications that can work natively on managed &lt;br /&gt;
infrastructure, from a Google Android device to large grids and clouds. The software supports major OSes and provides native &lt;br /&gt;
support for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Heroku==&lt;br /&gt;
Heroku, one of the first cloud platforms, has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure and Python and (undocumented) PHP and Perl. The base operating system is Debian&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
James Lindenbaum, Adam Wiggins, and Orion Henry founded Heroku supporting Rack-compatible projects''&amp;lt;ref&amp;gt;http://techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million&amp;lt;/ref&amp;gt;. In October 2009 Byron Sebastian joined Heroku as CEO''&amp;lt;ref&amp;gt;http://venturebeat.com/2009/10/14/sourcelabs-byron-sebastian-joins-heroku-as-ceo&amp;lt;/ref&amp;gt;. On December 8, 2010 Salesforce.com acquired Heroku as a wholly owned subsidiary of Salesforce.com. On July 12, 2011 Yukihiro &amp;quot;Matz&amp;quot; Matsumoto, the chief designer of the Ruby programming language, joined the company as Chief Architect, Ruby. That month, Heroku included support for Node.js and Clojure.On September 15, 2011 Heroku and Facebook introduced Heroku for Facebook''&amp;lt;ref&amp;gt;https://developers.facebook.com/blog/post/558&amp;lt;/ref&amp;gt;. Heroku now supports Cloudant, Couchbase Server, MongoDB and Redis, besides the standard PostgreSQL, both as part of the platform and as a standalone service.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The high-level architectural components of the Heroku platform consist of following components.&lt;br /&gt;
====Dynos and dyno Manager====&lt;br /&gt;
#A dyno is a lightweight container running a single user-specified command.The commands run within dynos include web processes, worker processes (such as timed jobs and queuing systems), and any process types declared in the app’s Procfile. Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively.&lt;br /&gt;
#Your application’s dynos run in a a distributed, fault-tolerant, and horizontally scalable execution environment. The dyno manager manages many different applications via the the process model and keeps dynos running automatically. The dyno manager restarts all your app’s dynos whenever you create a new release by deploying new code, changing your config vars, changing your add-ons.&lt;br /&gt;
====Logplex====&lt;br /&gt;
In a distributed system such as Heroku, manually accessing logs spread across many dynos provides a very disjointed view of an application’s event stream and omits relevant platform-level events.Logplex collates and distributes log entries from your app and other components of the Heroku platform.&lt;br /&gt;
====The Process Model====&lt;br /&gt;
The process model gives us a unique way to think about dividing our workloads and scaling up over time. The Heroku Cedar stack uses the process model for web, worker and all other types of dynos. Web apps typically have two or more entry points. Each of these entry points can be called a process type which run a specific command.&lt;br /&gt;
====Process Type====&lt;br /&gt;
A process type is the prototype from which one or more dynos are instantiated. The process types are declared in Procfile. &lt;br /&gt;
====Stack====&lt;br /&gt;
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. Heroku uses Celadon Cedar Stack. Celadon Cedar is Heroku’s default runtime stack and is a flexible, polyglot environment with robust introspection and erosion-resistance capabilities. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssmetkar</name></author>
	</entry>
</feed>