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. On Cedar, language choice and deployment infrastructure are orthogonal.

The foundation of Cedar’s unified multi-language support is the new process model which provides a consistent interface for running and managing apps.

Process model

Cedar introduces a new way to think about scaling your app: the process model. 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.

web: node web.js
worker: node worker.js
reports: node report.js

The process model enables the thousands of unique dyno formations to be coordinated by the dyno manager while giving application developers the flexibility to use the frameworks and libraries of their choice.

Management granularity

The process model also allows applications with logical components to manage and scale at a very granular level. For instance, to dial-down HTTP processing while increasing background job concurrency, apply the heroku ps:scale command against your application’s unique process model.

One-off dynos

Cedar’s flexibility is most evident with the heroku run command which lets you execute any command against your application. Many languages support a REPL which gives you a console with which to interact with your application. Here is an example of how to use heroku run to establish an interactive session with a remote REPL for a Clojure app.

Visibility

Deployment platforms can appear to be black boxes in their management and automation of application runtimes. Heroku Cedar provides several tools to give application developers complete insight into their applications.

Dyno formation

The heroku ps command lists all dynos running for an application and clearly identifies the state of each individual dyno.

Here we see the router receiving a request and passing it to the web.3 dyno while the worker.1 dyno indexes an article for search. Router logs, database queries and application output is all coalesced into a singled event stream for full visibility into your application’s execution.

Component and dyno-level introspection is also available to quickly zero-in on problematic dynos and filter out irrelevant activity.

Releases ensures that an application’s lifecycle is captured in an accountable and actionable format with the ability to undo errant modifications with heroku releases:rollback.

Advanced HTTP capabilities

On Cedar, an app named foo will have the default hostname of foo.herokuapp.com.

The herokuapp.com domain routes to a modern HTTP stack which offers a direct routing path to your web processes. This allows for advanced HTTP uses such as chunked responses, long polling, and using an asynchronous web server to handle multiple responses from a single web process.

Cedar does not include a reverse proxy cache such as Varnish, preferring to empower developers to choose the CDN solution that best serves their needs.