September 29, 2016 | Written by: Robin Bobbitt
Categorized: Events | Hybrid Deployments
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.
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!