FAQs about AppScale
AppScale is an easy-to-manage serverless platform for building and running scalable web and mobile applications on any infrastructure. It is open source and modeled on Google App Engine APIs. The platform enables developers to focus solely on business logic in order to rapidly build and automatically deploy and scale unmodified Google App Engine applications over public and private cloud systems and on-premise clusters. It allows operations to provide a consistent, tunable environment that can simplify running and maintaining apps on multiple infrastructures. The business will benefit from faster time-to-market, reduced operational costs, maximized application lifetime, and the flexibility to integrate with new or existing technologies.
AppScale provides developers with a rapid, API-driven development platform that can run applications on any infrastructure. AppScale decouples application logic from its service ecosystem to give developers and cloud administrators control over application deployment, data storage, resource use, backup, and migration. AppScale’s serverless benefits include high-level APIs for persistence, asynchronous execution, distributed in-memory cache, user authentication, and more. It takes care of the “plumbing” work, like service discovery, load-balancing, fault-tolerance, and auto-scaling so developers can focus on building the app that scales from day one. With AppScale, the developers can focus on the business logic, not the glue code and can choose the public cloud with the best features that will help them develop applications rapidly and easily.
Developers and companies choose AppScale because it delivers a serverless platform where development, deployment, and operations are all made easy. AppScale provides developers with a rapid application development environment, operations with a portable, easy-to-manage platform that is both consistent and tunable, and the business with a cost-effective method for future-proofing apps to avoid lock-in. Learn more about the benefits for developers, operations, and the business on our Why AppScale page.
AppScale originated as a research project out of the U.C. Santa Barbara Computer Science Department under the supervision of Professor Chandra Krintz, PhD. The project was originally funded by the NSF, with additional funding from Google, IBM and NIH. In 2013, co-founders Dr. Chandra Krintz, Chief Scientist, Navraj Chohan, Chris Bunch, and Woody Rollins, CEO, founded AppScale Systems to commercialize the private PaaS technology. AppScale was first commercially released on February 14, 2013.
Google App Engine (GAE), originally released in 2008, is one of the first serverless platforms, enabling software developers to create web and mobile applications quicker, easier, and more scalably. GAE allows developers to focus solely on the business logic of building their application while Google manages the underlying infrastructure concerns like provisioning and autoscaling. GAE is easy to learn, quick to deploy, supports multiple software languages and is scalable on a planetary level. These reasons are why the AppScale team modeled the AppScale serverless platform after the GAE APIs. Learn more on the Google App Engine page.
Serverless the term is a way to describe a new way of computing that abstracts away the infrastructure complexity typically associated with managing servers for web and mobile application services. Serverless platforms require no upfront provisioning or ongoing management of infrastructure resources as the platform dynamically provisions and scales resources as needed. Learn more on Google Cloud’s serverless page.
Multi cloud is the use of multiple cloud computing and storage services in a single heterogeneous architecture. This also refers to the distribution of cloud assets, software, applications, etc. across several cloud-hosting environments. With a typical multi cloud architecture utilizing two or more public clouds as well as multiple private clouds, a multi cloud environment aims to eliminate the reliance on any single cloud provider.
Since AppScale faithfully implements Google App Engine APIs in open source, learning AppScale is very similar to learning App Engine. AppScale supports the same languages as App Engine standard, Java, Python, Go, and PHP.
First, we recommend reviewing the App Engine standard documentation and then depending on our language preference, read the documentation for Java, Python, Go, or PHP. Another terrific, free, and hilarious-to-watch resource is Udacity’s online course on App Engine.
Second, review the AppScale User Guide (link TBD) and check out these two blog posts on Getting Started with Google App Engine and Deploying Applications using AppScale.
Currently, you can find our documentation on our GitHub Wiki. Feel free to suggest edits! You can also review the AppScale User Guide (link TBD).
The AppScale Marketplace allows you, in just one click, to upload your own application or take a test drive with a preloaded sample app on AppScale running on Azure, GCP, AWS or Alibaba. Docker, Vagrant, or from Source.
Assuming you have Vagrant or Docker installed, it is easy to stand up a fully functional single-node deployment on your own development machine. Developers of AppScale can install the system from the latest source code hosted on github.com.
Another easy way to get AppScale running is by launching a cloud instance from the AppScale Marketplace of one of the public clouds. If you’d rather not use the Marketplace, you can launch a cloud instance from an image and configure it yourself, effectively performing some of the steps by hand that the marketplace launch automates.
When starting AppScale in cloud mode AppScale creates Virtual Machines for you and is able to automatically scale. To start AppScale in cloud mode you should use one of the public clouds: Google Compute Engine (GCE), Amazon EC2, Microsoft Azure,… or use a private cloud like Eucalyptus.
When starting AppScale in cluster mode you start the Virtual Machines yourself and install AppScale on it. Starting AppScale in cluster mode will allow you to run on any public, private, or hybrid cloud infrastructure, as well as on-premise systems. Examples would be Google Cloud Platform, Amazon AWS, Microsoft Azure, IBM SoftLayer, Alibaba, Tencent, CenturyLink, Equinix or on private clouds built with HPE Eucalyptus or OpenStack.
Each deployment starts the AppScale Dashboard (Web UI). It is reachable at the public IP of the head node or any load-balancer at port 1080 (you will be redirected to the secure port at 1443). Once you reach the dashboard URL (the images above) you will need to log in to be able to access all the functionalities (use email and password you entered during `appscale up`). If you have any questions, reach out to the community for help in Community Forum or drop us a note directly.
Yes. Backup your data first! Currently, the upgrade process will require some downtime. Then you can run AppScale upgrade from AppScale Tools 2.9 onwards.
For more info on doing a backup on AppScale visit: https://github.com/AppScale/appscale/wiki/Migration-into-AppScale%2C-Backup-%26-Recovery#doing-a-backup-on-appscale
The easiest way to create an instance with the AppScale image is by going to Images under Compute Engine and select the AppScale you’ve created. Once you selected the image, you can click on ‘create instance’ with the following settings:
Machine type: Pick a machine type with at least 2CPU and 7GB RAM (e.g. machine type: 2 vCPUs, 7.5 GB memory, n1-standard-2)
Networking: Pick under network interfaces the network ‘AppScale’ you’ve created.
And click create.
In the Google Cloud Platform console, go to Images under Compute Engine, and create a new image with the following settings:
Source: “Cloud Storage file”
Cloud Storage file: “appscale-images/latest/appscale.tar.gz”
And click create. Creating the image can take a couple of minutes.
Developing on AppScale
Like App Engine’s standard environment, we support applications written in Python, Java, PHP, and Go.
Yes. You have full access to the VMs running AppScale. You can either whitelist the library or add your own custom GAE APIs.
The python27 and PHP runtimes are based on the 1.8.0 SDK.
The Java runtime is based on the 1.8.4 SDK. Make sure your Java apps are compiled using this version. Failure to do so may result in unexpected behaviour.
The Go runtime is based on the 1.9.48 SDK. Go language support is at 1.6.
AppScale does not yet support applications created for the flexible environment (previously called Managed VMs). If you are starting a new application that you would like to work on AppScale, please make sure that you are using the documentation for the standard environment.
Deploying on AppScale
Yes. Make sure you use different app IDs for each application.
Yes. Many companies would like to bring their successful applications, games, and SaaS to China, which is not supported by a Google data center. This can be done simply and easily using AppScale, which will then deploy the application in a domestic China data center, like Alibaba, Microsoft Azure China or Tencent. AppScale gives customers the flexibility and speed to enter the Chinese market without the expense of additional development or the need to rewrite or modify their app. AppScale is the only software that allows for this ease of portability from App Engine to any other cloud.
On infrastructures with managed MySQL offerings, it is possible to use an external MySQL Server. In any other case, you’ll need to install MySQL server and client on your AppScale instance. You can do so by running:
sudo apt-get install mysql-server mysql-client
Then you need to add data into your MySQL server, create a user (username, password) that your app will use to connect to the database and grant them privileges on the database(s) that your app will be accessing.
Do not forget to specify the database URL in the configuration file of your application.
For a Java app that works straight with MySQL, you need to include the following in your appengine-web.xml file:
For a Python app, you can use MySQLdb. You’ll need to explicitly install the MySQLdb Python package with:
sudo apt-get install python-mysqldb
If you are using the Fast Start launch and have an issue installing the python MySQL library. Do the following to install the library:
sudo apt-get update && sudo apt-get upgrade sudo apt-get install mysql-server-5.6 sudo apt-get install python-mysqldb
You can find a sample guestbook app using MySQL here.
On infrastructures with managed MySQL offerings, it is possible to use an external MySQL Server.
Yes. You can deploy your GAE application not only on Google Compute Engine (GCE) but on any public cloud (Amazon AWS, Microsoft Azure, IBM SoftLayer, Alibaba, Tencent, CenturyLink, Equinix), Hybrid Cloud infrastructures and private clouds built with HPE Eucalyptus or OpenStack.
100 nodes. You don’t need these many nodes unless you’re running a high traffic site.
In your AppScalefile put in a:
Now this will be synced to all nodes in your AppScale deployment. If you change the build script (changing underlying technologies), you can still have the nodes run custom commands on boot using “user_commands” in your AppScalefile.
scp : "~/appscale" user_commands: - 'apt-get install -y htop' - 'apt-get install -y vim'
AppScale Support & Community
AppScale Support ensures that users and customers get help on technical issues and additional customized guidance to run and develop their software application on AppScale.
For commercial support, visit: https://www.appscale.com/products/appscale-customer-success/#AppScale-Support , contact us via email on firstname.lastname@example.org, or fill out a form on https://go.appscale.com/contact-appscale and our team will connect with you as soon as possible.
For free (community) support, join our community on: https://groups.google.com/forum/#!forum/appscale_community
Absolutely, AppScale Systems has a global support team to implement a full range of support and professional services. We are trusted for our expertise in enabling businesses to develop and/or deploy their applications quickly and efficiently. AppScale supports your business with custom deployment, enhancement, and extensions of the platform, through both packaged and custom services.
Have additional questions? We’d love to connect and discuss your specific needs. Please reach out!
AppScale’s commercial support covers any issue related to your AppScale deployment. Contact us for more info.
Customers: To submit feature requests or issues related to AppScale, you will have to use our ticketing system. If our customer success team has not provided you with an instruction guide please feel free to get in touch and we’ll walk you through the process of getting set up and/or filing a ticket.
Open Source users: We recommend our Open Source users to open a new issue on our GitHub to report bugs, enhancements or any other requests. For more info on GitHub Issues visit: https://help.github.com/articles/about-issues/
Security & Risk Management
AppScale manages the firewall on each machine of a deployment. This allows it to only open ports that are required for its operation. AppScale leverages iptables in the underlying system and provides facilities for the administrator to allow or deny basic access to functionalities (for example the AppScale dashboard could be made accessible only from certain IPs).
Yes, it is. AppScale supports fundamental HIPAA requirements, such as Technical Safeguards for access control, Audit Reports for tracking activity, and Technical Policies for data integrity. AppScale provides this core support to enable HIPAA compliance implemented by the application developer.
Yes, it is. AppScale provides and supports the core functionality required by application developers to meet FedRamp requirements.
Set login_host in your AppScalefile.
Overwrite the cert and private key used by AppScale in /etc/nginx/ and /etc/appscale/certs on your head node. Then do “service nginx reload”.
root@appscale-image0:~# cp ~/my_own_cert.crt /etc/nginx/mycert.pem root@appscale-image0:~# cp ~/my_own_pk.pem /etc/nginx/mykey.pem root@appscale-image0:~# cp ~/my_own_cert.crt /etc/appscale/certs/mycert.pem root@appscale-image0:~# cp ~/my_own_pk.pem /etc/appscale/certs/mykey.pem root@appscale-image0:~# service nginx reload Reloading nginx configuration: nginx.
Since AppScale manages the firewall rules directly, the easiest way is to setup a network rule with all the ports open. To do so:
login to the google developer console:
1) go to the VPC Network section under Networking and select VPC networks
Create a new VPC network with the following settings:
Subnet creation mode: ‘automatic’
and click create.
2) go to the VPC Network section under Networking and select Firewall Rules
Create a new firewall rule with the following settings:
Network: choose ‘AppScale’
Targets: choose “All instances in the network”
Source IP ranges: ‘0.0.0.0/0’
Protocols and ports: ‘tcp:1-65535;udp:1-65535’
And click create.