Wrapping libyaml in go

by February 28, 2014

We recently released version 6.0.0 of cf, the command line client for Cloud Foundry. cf was previously written in Ruby, and we have rewritten it in Go. This allowed us to package cf as as a single binary and simplified our deployment strategy enormously.
The YAML problem
Two weeks before our release, we realized that the go YAML library we were using, goyaml, is distributed under the LGPL license. This makes it unusable for cf. We had to quickly find another way to parse YAML in cf.
The definitive YAML implementation is a C library called libyaml. We knew that Go had good support for interfacing with C libraries, so we decided to write our own go bindings to libyaml. This felt a bit risky given that we were releasing in two weeks, so we named our creation ‘gamble’.

HM9000: Ready for Launch

by February 22, 2014

Cloud Foundry (CF) is a platform-as-a-service that, once deployed, makes it easy for developers to deploy, run and scale web applications. Powering this elegant PAAS is a complex distributed system comprised of several interoperating components: the Cloud Controller (CC) accepts user input and directs Droplet Execution Agents (DEAs) to stage and run web applications. Meanwhile, the Router maps inbound traffic to web-app instances, while the Loggregator streams log output back to developers. All these components communicate via NATS, a performant message bus.
It’s possible to boil CF down to a relatively simple mental model: users inform CC that they desire applications and Cloud Foundry ensures that those applications, and only those applications, are actually running on DEAs.

Cloud Foundry Serving Around the Globe

by February 14, 2014

The Church of Jesus Christ of Latter-day Saints (LDS Church) is a really large organization with even larger reach – probably much more than most of us realize. Sure, you probably know about the massive genealogy library and databases that they have, but it’s so much more. In my cursory research I found that they have numerous humanitarian programs, benefitting people around the globe with health services, drilling wells for safe water, disaster relief, educational services and more.
Why am I telling you all this? Because, just like in virtually every other industry Software is Eating the World; the mission of the LDS Church is greatly enabled and supported through technological innovation and application.

Monitoring Java Apps with AppDynamics

by February 4, 2014

The following is a guest blog post by Dustin Whittle, Developer Evangelist at AppDynamics.
AppDynamics is an Application Performance Management company that offers solutions to monitor a variety of applications running on public clouds or in private data centers. App Dynamics is excited to support Pivotal’s Cloud Platform by making it easy to monitor Java apps running on Cloud Foundry and Pivotal’s Web Services.
Monitor Apps on Pivotal Web Services
The AppDynamic Java agents are included in the default Java buildpack for Cloud Foundry, so if you have AppDynamics monitoring running, the Cloud Foundry DEA will auto-detect the service and enable the agent in the buildpack.

Remote Dependencies, Convenience, Risk and Other Considerations for Operating Distributed Systems

by February 3, 2014

One deeply held principle by experienced distributed system operators that I have worked with is that you should have no external dependencies to your software other than the ties to minimum requirements of the OS such as common system libraries, utilities, and the kernel of the base OS. This approach should enable recreating a distributed system deployment without any dependencies on the outside world. When something goes wrong, you should have control over your own destiny. Reliance on any external dependency that is managed or hosted by someone else introduces risk that something outside your system can affect your ability to restore and recreate the system any time you need to.