Events

With GitHub Enterprise on Bluemix Dedicated, there’s no worry

Share this post:

Earlier this month, I had the good fortune of attending GitHub Universe at San Francisco’s Pier 70 along with these fine folks from IBM and over 1,400 other members of the GitHub community. We were treated to gorgeous sunshine, over-the-top eats, and some pretty inspiring talks.

While most of my conversations centered around IBM Bluemix and the Watson and IoT services powering our foosball table, some of my favorites were with the college students and recent graduates wanting to know about life as an engineer at IBM. Common questions I heard were – “what do I work on,” and “what technologies do we use?”

As a senior technical lead on Git Squad in IBM’s Cloud unit, one of the offerings we’re responsible for is IBM Bluemix Dedicated for GitHub Enterprise. Essentially, we offer GitHub Enterprise as a service, hosted in our cloud and managed entirely by us. As part of Bluemix Dedicated, each GitHub Enterprise instance is installed on physically isolated hardware, private and secure for our users.

Because we need to be able to manage a large number of instances of GitHub Enterprise, automation is key. Much of what our squad works on is automation to provision and configure primary and replica GitHub Enterprise VMs, an on-site backup VM, and an off-site EVault backup, all hosted by SoftLayer. We use primarily bash scripts (with some Perl and JavaScript sprinkled in), orchestrated with UrbanCode Deploy, to automate not just the initial provisioning of the service, but also upgrades, fail-overs, and basically any repeatable process we need to perform across our environments.

In addition to the infrastructure described above, we also develop two microservices to round out our offering. The first is our Central Authentication Service, or CAS service. This service allows us to use single sign-on with Bluemix to log in to GitHub Enterprise. We currently are using the open-source Apereo CAS server with a custom extension that delegates authentication to Bluemix UAA using OAuth. The Apereo CAS server is a Java implementation built on the Spring framework, and while it gets the job done, we’ve found we need something a little more lightweight and designed with scalability and high availability in mind. As such, we are finishing up development on an entirely new CAS implementation using Node.js that we would like to open source in the future.

Our other microservice, also written in Node.js, is a monitoring application that verifies not only that the service is up, but that it is useable, by regularly performing remote Git operations against the GitHub Enterprise primary server. We continue to improve this app as new issues arise by adding additional verifications of the service and its configuration. Test failures immediately post to Slack and trigger a PagerDuty incident assigned to our DevOps team, so we work hard to make sure everything is rock solid! We also work with the Bluemix monitoring team to set up ping monitors, OS health monitors, and custom GitHub Enterprise-specific monitors to verify the health of processes like replication and backup.

There’s a bit more to it than this, of course, but one of our big values to our users is that you don’t need to worry about any of what I just talked about. You get the GitHub developer experience, and we take care of the rest. Through our service, we are growing the GitHub community to include developers at companies who aren’t allowed to store their source at github.com, but don’t want the worry or overhead of providing GitHub Enterprise in-house. We self-host our source code in one of our own managed instances of GitHub Enterprise, so it was exciting to be at Universe not just as a sponsor and partner, but also as a user and member of the GitHub community.

If you’ve managed to make it this far down my post, you may be thinking, “That was fascinating, Robin, but I use bluemix.net and github.com. What do you have for me?” We didn’t forget about you. In addition to our managed GitHub Enterprise offering, our squad is also responsible for the integration of GitHub into Bluemix Toolchains, which has just gone beta. With Toolchains, you can choose your favorite devops tools and have them automatically integrate to support the development, deployment, and operation of your apps.

Interested in more information? Check out a tutorial or just dive right in!

More Events stories
February 14, 2019

Migrating Java Microservices to MicroProfile – Epilogue

If you are building next-generation microservices with enterprise Java, you should look at Eclipse MicroProfile. It is lightweight, easy to learn, and covers the whole spectrum of core technologies required for a microservices architecture. This is the summary of the nine-part series on our team's migration of a Spring-based microservices app to MicroProfile.

Continue reading

February 14, 2019

VIDEO – Hybrid Cloud Architecture: Intro

We're excited to introduce a three-part lightboarding video series that's going to delve into the world of hybrid cloud architecture. In this Intro video, Sai Vennam lay out the three major hybrid cloud architecture issues that we're going to cover in this series

Continue reading

February 13, 2019

Istio and Knative: Extending Kubernetes for a New Developer Experience

Istio and Knative are poised to change how application developers use and view Kubernetes, the services will provide a new, simpler (yet more advanced) experience when it comes to managing cloud-native applications.

Continue reading