Today’s software is served from the cloud and the world’s data is stored in the cloud. The benefits are clear. Let the cloud platform providers deal with the complexities of managing servers and data centers, let the users enjoy continuous experience across multiple devices and let developers focus on their applications. In this article, I’ll focus on developer tools that migrated to the cloud. Development shops used to run servers in the office or rented servers from private hosting providers. This is not necessary anymore. All functions can now be served on the cloud.
First and foremost are the cloud platforms themselves: AWS, Google Cloud, Microsoft Azure and a few smaller ones. IBM is the leader when it comes to managing private clouds. There is no argument any more that deploying your software to the cloud is the superior option for most use cases (exceptions are regulated industries and super sensitive projects). When you deploy to the cloud, you enjoy from the benefits of scale, the best technology and the best operations teams looking after your deployments. When you factor in the cost of system administration, it ends up being a pretty good deal for most developers.
Source control is dominated by git these days. GitHub is a household name and lets you create as many public repositories as you want for free. You have to pay for private repositories. GitLab is another great option. It is not as established as GitHub, but it offers better deals, including free unlimited private repos and complete CI/CD pipelines. BitBucket is yet another option, but it is not the core business of Attlassian so it gets less attention and the development pace is slower. It obviously has great integration with Jira and Confluence.
Continuous integration and continuous deployment are important aspects of modern development. There are several services that provide those capabilities such as Travis CI, CircleCI, Drone.io and Codeship. Cloud providers often offer integrated solutions as well.
Monitoring and Central Logging
Modern Web-scale distributed systems run on many machines. Monitoring and logging can no longer be done by connecting to each machine and tailing log files. Central logging and monitoring services in the cloud like Loggly, Grafana.net, Greylog, Splunk and DataDog are popular options. Sentry is an amazing service for analyzing exceptions. New Relic is expansive, but gives you great insight into what your system is doing.
Even if you go for a homegrown solution based on the popular ELK (Elasticsearch, LogStash and Kibana) or something like Prometheus + Grafana, you will probably deploy them in the cloud.
Cross-Platform, Mobile and Cross-Browser Testing
Cloud Testing has many benefits. You can scale your test clients easily to perform serious load and stress tests. Configure many test environments and elastically manage your test machine fleet. There are many services for browser and mobile testing. Some of the popular solutions are BrowserStack, SauceLabs and Selenium.
A/B Testing is about testing different versions of your application to compare user response and allow you to choose the best options with the least amount of risk. Predicting user reactions to changes in design are not very reliable. A/B testing lets you off the hook by using empirical studies. Optimizely is leading the pack there. But, there are others such as VWO and AB Tasty.
Project Management, File Sharing, Knowledge Management and Issue Tracking
This is another important category or categories. I lump them all together because you often see integrated solutions that combine them. Google and Microsoft offer free storage and office suites. Attlasian has a string showing for project management and issue tracking with Jira and knowledge management with Confluence. Dropbox and Box offer solutions for individual developers as well as teams. Dropbox is a common way for developers and artists to share assets.
Big data belongs in the cloud, there is no question about it. At that point it has become much more reasonable to run the applications that manage, sift and display the data in the cloud as well. This approach supports many different clients on many devices, all synchronized and allowing the servers in the cloud to do the heavy lifting.