Heroku - A small insight into a cloud based development environment
Heroku is a cloud-based platform and works as a Platform-as-a-service. It helps developers and companies to build, deliver, monitor and to scale applications without acquiring a deeper knowledge of the server or system administration. Today (2017) the platform supports all apps which are written in Ruby, Java, Node.js, PHP, Go, Scala, Play or Clojure.
Original article - zauberware.com
A short history
Heroku was founded by James Lindenbaum, Orion Henry and Adam Wiggins in 2007 and sold to Salesforce in 2010. Unsurprisingly, the headquarter is in San Francisco. At the very beginning Heroku only supported RubyOnRails applications. Therefore the RubyOnRails boom around 2010 also pushed Heroku’s popularity. According to the company it already helped millions of developers to deploy their apps into Amazon Web Services (AWS). Since the takeover of Salesforce it has integrated even more services, supported more developing languages and it has changed its pricing structure and user interface - not only once.
Overview of functionality
Heroku is app-orientated
The main target groups are programmers, developer teams and software development companies, who don’t want to focus on delivering and setting up server infrastructure, but want to focus on developing nice apps for their customers or their startup. The cloud based environment covers user management, development, testing, quality assurance and handling of staging and production systems.
Smart scaling of apps
A big advantage of Heroku is the possibility to add more resources (dyno) to your app with just a click. Auto-Scaling for dynes is possible as well and can save a lot of money for your clients.
User friendly environment
Meanwhile Heroku supports a lot coding languages and integrations. Developers can choose their preferred language, database and services for their apps. Outstanding to competitors is the documentation for functionality, the deployment of apps (e.g. RubyOnRails and Spring) or the setup and usage for databases like Postgres or MongoDB.
Secure and traceable deployment
Heroku used GIT version control for the deployment processes. With GIT you get a secure and traceable deployment process, which fits perfectly into modern development processes.
Staging and Production
Heroku simplifies the handling for staging and production systems. The staging system acts as the deployment server for developers and as a test environment for quality assurance. After the test phase, it only needs a click to transfer the current state of staging to production.
Another smart service is the continuous integration for your apps. Since we setup the process, we have saved a lot of time by decreasing the error rate tremendously. With the deployment pipeline (staging & production) of Heroku, you can connect and visualize GitHub Repository, Codeship or other CI-Services in a simple way.
By now, Heroku has become one of the largest marketplaces for software development services in the cloud. Many services can be installed with a click and a small script for your app. the services cover different databases, monitoring tools, log-in services, email/sms, caching, error handling, content management systems, search functionality, tools for metrics and analytics, network services, error alerts and notifications, user management, security, image and video processing.
Meanwhile Heroku has created an environment, which even larger companies feel comfortable with. Heroku Enterprise helps teams to develop applications collaboratively and provides a multi-level user management for company owners. Furthermore, you get a better support with Heroku Enterprise, which is other respects, because of the large number of developers.
Are there disadvantages?
For sure, many advantages always have some drawbacks: A big disadvantage is costs. Up to a certain level you can use hobby-dynos which costs around 7$/month. But if you want a full functional staging system, a larger database plus 1-2 services the costs can climb up to 50-80$/month. In Parallel you have a production system with similar costs per dyno and database per month.Another disadvantage is the locked application environment. You will never get a SSH access to it. You have to trust the settings and installation scripts of Heroku. (But it might not be the worst approach, as otherwise developers without system administration skills will always crash their servers.) At least with the Heroku-CLI you have access to your app and you are allowed to access your database directly.
Is it worth for me, for my company, my start-up or my customers?
We think that Heroku is the ideal platform for all who cannot make a huge investment acquiring skills in server administration or pay external companies for that. But, if the monthly costs of your app are similar to the salary of a system administrator, you should think about building your own infrastructure.
If you already have system administrators in your team or company, you will end up using your own infrastructure. But you may show Heroku to your sys-admins and let them create and deploy an app. Eventually if you don’t use the platform, you can learn a lot from Heroku when it comes to usability and developer friendliness.
What are the alternatives to Heroku?
Not only Salesforce has seen the potential of cloud-based development environment. Since the launch of Heroku until today (2017) a lot of companies have been developing a Platform-as-a-Service for app deployment. Depending on the orientation of the community or company, they all try to provide a workflow for deployment, which is developer friendly. Most of them integrate a lot of external services. A short overview of competitors on our website.