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!

Add Comment
One Comment

Leave a Reply

Your email address will not be published.Required fields are marked *


Anthony Cooray

Very useful introduction to how this service is setup. Thanks. Hope we have something like this for all the services.

Reply
More Hybrid Deployments Stories

Watson is getting a little emotional with PubNub

For my first API World session, I'm sharing the stage with Bhavana Srinivas of PubNub. Together, we'll cover how to make cognitive, real-time apps using IBM Watson services with PubNub Functions. As you will see at our session, combining Watson Tone Analyzer with PubNub is not only lightening fast, but it's also very easy.

Continue reading

API Connect can become your tool of choice

At this year's API World, I'll be hosting a workshop with my colleague, Marek Sadowski. Some of you will know Marek from his robot-building exercises. Our workshop will focus the power of API Connect bringing together disparate worlds for the benefit of developers.

Continue reading

Top 5 Highlights from VMworld 2017

With VMworld US & Europe coming to a close, we’re taking a look back into activities and announcements that took place over the past couple of weeks. Below is a recap of some of the most exciting stories for those who didn’t get a chance to hear the news on the ground.

Continue reading