As I mentioned in the past, it’s not easy to work alone in development. I have so much work to do and so little time, that I often don’t give myself enough time to explore tools and methodologies that could improve my day to day. This year I’m trying to change that and one of the first things I’ve done is try to improve my deployment workflow.
Until now, I’ve been working locally on a Git repository and making deployments with and FTP software. You don’t need to tell me that is crazy to do that, I know very well. It’s really easy to make mistakes and as the project becomes more complex, deployment becomes a pain. I needed to fix this issue and I wanted something simple and straightforward. A problem that I found while researching for the right tool is that most solutions are overtly complicated and full of team-oriented options that are great, but are completely useless to me.
Git to FTP with Beanstalk
I finally started using Beanstalk, a very simple yet powerful tool that has improved greatly deployment at work. Beanstalk is really simple, it works as a remote repository (works with Git and Subvesion) and it allows you to connect through FTP to your server for deployment. You have full control of when and how you deploy. You can either do an automatic upload every time you do a push request (not recommended at all on production) or you can manually deploy. They even let you include an special command in your commits to trigger an auto deployment: [deploy:production]. You also have the option to configure different environments for the same repository, for example staging and production.
Usually, before you deploy you want to review the changes to be sure that everything is ok. Beanstalk let’s you do that on site. It provides a section where you can check every commit, with a view of the changes file by file. There you can comments and notify your colleagues, edit the files or ask for a review by your co-workers. Once verified that all changes are correct, you can navigate to the Deployments section and just push the changes to the server.
A good option thanks to its simplicity
As you can see, Beanstalk provides few but very useful tools to make deployments easy and painless while maintaining a high level of control. They claim that they ‘have a global redundant infrastructure and make use of the latest encryption techniques to keep your files secure and available world-wide’, that sounds really good but I don’t have a way to verify that it’s 100% true.
The only thing I can add is that it is working really well for me and so far I’m happy with the results. The learning curve is close to zero if you’ve been using Subversion or Git and you’ll see the benefits immediately. I think I’ve made the right decision here, but I’m always open to hear anyone’s opinion.
P.s. If you want to check it out they have some free options.
P.s.s: images are examples taken from Beanstalk’s website.