Beanstalk is a version control service from Wildbit, LLC that supports Git, Subversion and Mercurial with a nice focus on collaboration and deployment. These systems are very simple things in principal, but getting them right has proven to be hard as other companies have shown, does Beanstalk tick all the right boxes? Read on to find out.
As I’ve mentioned in previous articles, I’m a software developer outside of Previous Magazine, collaborating on software has become a major part of my workflow and finding a versioning system that supported the way that I and others wanted to work was the basis of our entire workflow. GitHub has restricted my workflow lately and overall I’ve found the platform to be a little irksome with certain user interface choices as well as a lack of deployment and backup options, so I asked myself why I’m paying for a premium GitHub account when there are far superior services out there which can do what I need to a much higher quality. I have had some real living nightmares with similar service providers in the past, and I was initially reluctant to switch to yet another service until I saw just how great Beanstalk is, and how easy it is to make the switch today without any real interruptions in your team’s workflow.
The web interface of Beanstalk is accessible via a subdomain of your choosing on the beanstalkapp.com domain, whilst this is very useful, we would like to see Beanstalk offer a more whitelabel solution by having the web app on an entirely custom domain. The overall colour scheme of the user interface is very easy on the eye primarily in white, grey and brown, a colour scheme that reminds me of the Minecraft grass block, the overall choice of colours has an earthy quality to it, very appropriate for a service called Beanstalk, something that reminds me of growth and development in plants.
Beanstalk isn’t a publicly social system like GitHub is by default on a non-Enterprise account, but it does have tight collaborative features integrated into your private repositories that make GitHub look a bit like a kids toy. Truly private with your own rules is the only way to develop great software products, it means that nobody you don’t know and trust can view your source or leak any of it, and there will be no accidental publishings and thus making your software open-source temporarily and compromising the overall security of your software as I’ve seen happen in the past on GitHub when a developer goes turbo (this is one for you Wreck-It Ralph fans!).
Setting up Beanstalk with my colleagues was very easy, it fitted into our workflow without any issues unlike other providers we have used in the past. We currently use Tower for git and Kaleidoscope for visual diff on our MacBook Airs, Tower is most definitely our recommended client for Beanstalk.
Repositories are easily created from the web interface, not everybody wants to use Git, just like not everybody wants to use Subversion or Mercurial either, Beanstalk gives users the flexibility to decide what system they want each repository on their account to use during the creation process. Beanstalk’s Gold plan allows you to have over fifty repositories on one account with 12 GB of storage available across the fifty repositories, if you decide you need more storage then you can contact Beanstalk and they will make it happen, you can even get more storage than the highest plan offers. Once created, you can decide who has access to it by inviting them by email address or from a list of currently added users on your account, thus making inviting your team leader to a new project for a client seamless and easy.
Collaboration with Beanstalk
Inviting colleagues and clients to Beanstalk is a joy, and Beanstalk is so easy to use that even if somebody has never used a versioning system that they can understand it. Anybody can even get it configured on their computer thanks to the intuitive nature of Beanstalk as well as the helpful guides on the Beanstalk webapp that provide information for users across a variety of platforms as well as suggest visual git clients that users would find helpful. Up to forty people can be invited to Beanstalk’s Gold plan, that’s quite a few developers!
The Beanstalk dashboard lists recent changes and when changes last happened on a repository or when a user last pushed a commit, a nice bonus is being able to set your timezone, something that has irked me about using services hosted in other countries that has often caused some confusion between myself and colleagues. These activity feeds can also be subscribed to via RSS, you can also optionally force users to authenticate when fetching their RSS feeds for an added layer of security.
Even when you’re on the move you can still get email notifications straight to your smartphone or tablet, these emails format perfectly for each device so all changes are easily readable at a glance without being forced to pinch to zoom and pan around the email, a big timesaver for all concerned. If notifications for every bit of activity on your repositories aren’t your kind of thing then you can also receive a summary at the beginning of each day.
Beanstalk sends email notifications to members of your development team informing them when something is deployed, these emails inform them of server status and show release notes too, the email notifications serve as a nice way to remind developers to pull the latest changes, something that is often missing in a workflow. These emails from Beanstalk are processed using the Postmark Inbound platform, Postmark is another service offered by Wildbit, LLC, this means that emails can be quickly replied to and the message that you gave will appear on the Beanstalk web interface as a comment. Wildbit show that dogfooding is very possible and very easy; they use the things that they create, that says a lot about the quality of them.
As well as browsing files and changes, you can also be productive whilst you’re away from your workflow with your local repository thanks to the code editor available through the Beanstalk web interface. With all this ease of editing of files from anywhere it is easy to get a bit carried away with your editing, that’s why Beanstalk provides a blame tool so you can see who has edited each and every line of code along with what changed on that particular line, this is tremendously useful on multi team projects and as we move into a larger team with Dutious this is going to become mission critical. Whilst editing files within the web interface, users can also preview what their HTML changes are going to look like.
The interface for editing code is very minimalist and simple, but it does offer some room for customisation with being able to choose font size, word wrap, tab size and soft tabs.
This ability to preview and share changes within the browser when making changes allows users to get the final okay before they push it to the production server, definitely something that should be encouraged. Reviewing code with the other developers on your account allows you to avoid making any mistakes with what you push to the production server as well as potentially improving it as two brains are better than one when it comes to programming.
Sometimes it can be tricky to figure out what lines have been changed between commits on other services whilst you’re away from your computer, but with Beanstalk they’ve covered that scenario; users can visually diff files through the Beanstalk web interface to quickly assess what has been changed since the last commit, give feedback and comment on individual lines of code. Genius!
Arguably the biggest feature Beanstalk has is the extensive deployment options offered to you. An example is allowing you to work on the latest commit offline then when you’re back online you can deploy it to your public server entirely automatically after pushing it, this makes getting in short bursts of programming whilst on the subway viable then pushing quickly when you get back up to the surface level with cellular coverage. Beanstalk allows me to escape using FTP, SFTP and SSH to communicate with our Media Temple Nitro plan. As well as FTP, SFTP and SSH, Beanstalk can also deploy to AWS (Amazon Web Services) via CloudFront, Rackspace Cloud Files, Heroku and Dream Objects.
If you have several different environments in your programming workflow such as development, staging and production then these can all be accommodated by Beanstalk by allowing you to choose what gets pushed to where, how and when.
With Beanstalk I’ve been able to almost entirely move away from FTP clients because of the automated deployment to our staging and production servers, this really speeds up the workflow because I only have to push a commit and it gets deployed to the right server without any unnecessary thinking and clicking. One of the things that I really like about Beanstalk is being able to see in real-time that the data is being transferred to the server without refreshing the page, if only more web-apps were as responsive and efficient as this, time spent refreshing is time wasted, and being able to have Beanstalk open on my secondary display and see in real-time when the transfer is done is hugely time saving.
If you’re like me then when deploying to a server you need to do more than just update the files, Beanstalk allows you to run scripts and commands remotely on your servers via SSH and web hooks, this is especially useful if you need your server caches emptying when you push a new commit or even do more complex tasks such as adding entries to your database from the new files that you just uploaded.
Beanstalk has a proven ability to handle scaling gracefully as evidenced by the developers who ran the website for the MTV Online Music Award in which they went from deploying to four application servers to deploying to twenty-two servers. Beanstalk can deploy simultaneously to multiple servers, Previous Magazine gets a huge amount of traffic, as do some of our clients and we like to use a load balancing system between three separate servers to handle the impact of hundreds of thousands of users visiting our website and using our apps whenever we publish a new article, Beanstalk makes ensuring that each server has the right data an absolute cinch. I can deploy to ten different servers simultaneously on the Beanstalk Gold plan, very impressive stuff and it feels incredibly powerful considering how much just a single click can make happen, Beanstalk has become a real timesaver in my everyday workflow.
Beanstalk integration with the rest of your workflow
If you already use an issue tracking system such as FogBugz, Lighthouse, Zendesk or Sifter then you can integrate them directly with Beanstalk via the API. Beanstalk also offers time tracking integration with the likes of Basecamp, Freckle and Harvest along with team discussion integration with Basecamp, Campfire and HipChat.
As well as supporting a variety of third party software, Beanstalk also provides a public REST API and web hooks to build your own integrations with. A great example of this API being used are the third party iOS, Android and Mac applications written especially for it including Habichuelas, Magic Bean and Beansprout, these allow you to deploy easily whilst on the go and view any other account activity, these are great if you want more of a native experience that email notifications don’t offer, though keep in mind that these apps may have bugs and may not be on a par with Beanstalk’s high level of quality.
Beanstalk can also be integrated with a lot of other services via Zapier through the Beanstalk API, I would really like to see support of Beanstalk come to activeCollab Corporate either natively or through a third party service, it is a pity that Zapier doesn’t yet seem to support activeCollab Corporate, I’ll be keeping my eye on this until it happens.
Hosting your own git server is a viable yet very lacklustre alternative as you don’t get the great browser-based interface and huge array of features that Beanstalk offers, you also don’t get Beanstalk’s state of the art security system, I highly doubt that anybody could come close to what Beanstalk offers at home or in their office. 70,000 companies trust Beanstalk with their data, some of the biggest names in the industry use Beanstalk including Intel and Disney, that speaks volumes about the quality of service that Beanstalk offers.
The security of our source code has been something of a concern in the past, we’ve been planning a government sector software product for several months called Dutious, obviously with systems like these, security is of the utmost importance to us. Whilst we did look into building our own git servers, simply keeping them in an office or at a house wasn’t an option with something of this sensitivity and importance, we needed to look for the best available.
Beanstalk is hosted with ServerCentral in a Type 2 SSAE 16 SOC 1 accredited facility, the most sophisticated datacenter in the Midwest of the USA in fact! You can sleep easy at night knowing that your source code is protected by 24/7 surveillance, keycard and biometric scanning protocols. We are overjoyed with the security that Beanstalk provides and just how seriously they value the privacy and security of their customers.
One of our concerns was who had access to the servers that we were going to be using as third parties are always something I question in business, thanks to some strict employee policies similar to those of ServerCentral, only a select few employees at Wildbit, LLC have access to the servers where data is stored. If you encounter any issues with your account and require support then an employee can only access your account or repository if the account owner or administrator gives them permission to do so. This is great as it really shocked and worried us in the past as to how the support team of various services could access our repository contents in just a click.
Speaking of support, Beanstalk Gold offers priority support to a team within the USA, they are quick to respond, very polite and eager to help you with plenty of knowledge to offer. Dealing with long waits on the phone to call centers in the East is just something that I don’t have time for anymore whilst running a business and programming.
Something that infuriated me on a git provider who I will save the embarrassment of and won’t name (Though you can most likely guess) is that they stored their passwords in plaintext, I can’t tell you how inconvenient it was for us all to change our passwords that were stored in 1Password one by one because of a simple intrusion that could have been easily prevented if they were attacked. Contrastingly, Beanstalk has taken every measure to prevent any security breach on the database level; customer accounts are accessed via HTTPS and SSH, and thankfully all the passwords are encrypted on both their servers and databases, this is a dedicated environment behind firewalls with constant monitoring both internally and externally. All of Beanstalk’s server software is updated regularly so there’s no lagging behind the latest security updates like most other services suffer from. Because of this you can be sure that your source code will be safe and won’t be getting leaked by any third party.
Another feature of the Beanstalk Gold plan being a Business Plan is being able to restrict access to the Beanstalk web interface by whitelisting IPs that can access it. Not only can you restrict access to the web interface by IP, you can also restrict access to your repositories and to the API, it is so great to see a company take security this seriously.
If you don’t want to restrict access by IP then as the Gold plan is one of Beanstalk’s Business plans, they provide an access log for the web interface, SSH and HTTPS access to repositories, this allows you to view activity and take action if there is anything unusual. IP restriction works in an office environment or when trusted developers have a static IP at home, but this may not be what you’re after if you plan on using it regularly from a domestic internet connection or whilst in your local Starbucks.
Whilst the access log is available for reading, it really isn’t that necessary to make a habit of viewing it as Beanstalk has very sophisticated brute-force login protection that detects multiple failed logins then locks that user account before then notifying the user of the access attempt via email. This brings me to my next point; something that can really compromise the security of your data is if a developer has a bad password. We’ve enforced that people connected to our Mac OS Server have passworded iDevices as a part of their device profile as the data on their devices is sensitive, likewise Beanstalk offers a way to enforce strong passwords with developers, other services should really take note of Beanstalk as they’re doing this very nicely with the way that their algorithm checks the password strength each time a user creates a new password. It is worth noting that this is a Business Plan only feature, so Gold and above is necessary to enforce strong passwords, although ideally this should be available across all plans.
Automatic login can also be disabled so that users must login every time they want to use the web interface of Beanstalk, this is something that I’ve been asking for on a variety of services over the years because autocomplete has caused a lot of embarrassment to some corporations on the likes of Twitter and Facebook.
Beanstalk is backed by a brilliant 100% Uptime SLA, Beanstalk has had a handful of issues over the last three months of using it, nothing major, not even irritating, I wasn’t even aware of the downtime when it happened, the downtime has been between sixty seconds to ten minutes and only on a handful of occasions. Wildbit, LLC are very honest about their system status and keep users in the loop, something that I can’t say about the other similar service providers I’ve used where I’ve even lost data or been left completely in the dark for hours or days regarding the situation, Beanstalk really is the best service I’ve seen and used of this kind even just for this reason.
On top of security, another concern of ours was the availability of our data. We previously used Basecamp as a project management system, whilst this was okay, we did find that not being able to export our data to another service to be a big reason why we stopped using it and moved over to something more open. We’ve lost data on other service providers due to hard drive failures on their servers, I can’t tell you the amount of grief that caused, Beanstalk is hosted in a redundant environment to minimise and even eliminate would-be downtime where possible, this system even allows recovery if there are any issues with the network or power. As an owner of multiple businesses myself, I’m well aware of the risks and possibilities of running a business, I always like to feel as if a service will allow me to export my data easily as well as back it up in a way that I see appropriate as all too often you’re locked into their ecosystem. With Beanstalk your data is stored across redundant disk arrays with HA (High Availability) and incremental snapshot backups are performed every sixty seconds to both onsite and offsite backup servers. You can also configure your own nightly backups to your own AWS S3 account, this is a great feature, but I would love to see Beanstalk offer more backup solutions such as SFTP.
Is Beanstalk Gold worth it?
The cheapest Beanstalk plan is $15 per month, Bronze, the Gold plan is $50 per month, and Diamond is $200 per month. Keeping in mind that these servers are managed and in the best datacenter in the USA, managed versioning systems with an integrated backup solution at these prices is an absolute bargain.
I’ve used several Git repository hosting services over the last three years, none of which I’ve been happy with, Beanstalk is tremendously good value for money and offers an expansive set of features that you won’t see matched elsewhere. If you’re in business and developing is something that you do regularly and take seriously, Beanstalk is the only platform you should consider, almost anything else is just an accident waiting to happen.
You don’t have to be stuck in a long-term contract as you can cancel at any time and you are billed per month so whenever in the month you cancel you only have to pay for that month. Beanstalk will accept Visa, Mastercard and American Express, they don’t currently accept PayPal, which is something that some users will find fault with, but paying by card ensures that there are no extortionate PayPal fees to pay, so evidently the savings from that are passed onto the consumer. You can pay annually or every 6 months but there is always the option to pay monthly if you don’t want to be stuck in a contract, a very nice thing if you run a startup business.
Whether you’re a seasoned veteran developer working at a Fortune 500 company or a complete newbie, Beanstalk has something to offer you and your team. You can test Beanstalk in an unlimited capacity with every feature for thirty days without even giving them your credit card information, with a testing policy like that there is no reason not to give Beanstalk a try. Previous Magazine are pleased to offer a 10% discount on your first month’s payment if you do choose to carry on using Beanstalk. You can register for a one month trial of Beanstalk here.