Software development is software development; the basics don't change when you introduce cloud computing. But moving to cloud-based development presents a few new opportunities, as well as some challenges. Though each enterprise is different, these tools offer something most companies can use to develop applications in the cloud.
One of the most fundamental tools for developers is an integrated development environment (IDE). Development tools, such as the Amazon Toolkit for Eclipse and features within Microsoft Visual Studio, are useful for developing cloud applications. When developing for the cloud, enterprises might also want to consider using cloud-based IDEs in the engineering process.
Aptana Studio 3, for example, is an open source IDE that supports direct deployment to Heroku and Engine Yard Platform as a Service (PaaS) environments. The IDE runs locally on Windows, Linux or Mac platforms; that local development platform could be a virtual machine that resides in the cloud. If you want to move your IDE to the cloud, you could use one of the growing number of cloud-based IDEs.
Cloud IDE is a browser-based development platform that allows you to write code in the cloud. You get the benefits of desktop IDEs, such as code completion and source code repository integration, as well as the ability to share your workspace with collaborators, which can be vital for a smoother development process.
Another cloud-based IDE, Cloud9 IDE, includes a chat feature that allows developers to communicate with collaborators within the IDE. It also allows you to deploy your code to cloud platforms, including Windows Azure, Cloud Foundry and Heroku. The Cloud9 IDE also supports the ability to deploy code to on-premises servers. It also has a local app for Mac and Linux platforms that allows developers to work offline and synchronize cloud-based copies of code with local copies.
Cloud development tool criteria and selection
There is no single feature that all enterprises can look for when determining the best cloud-based development tool. However, enterprise IT and cloud developers should be clear about which features are most important to them. They also need to stay up to date on all features cloud development tool vendors offer.
There is no single feature that all enterprises can look for when determining the best cloud-based development tool.
One valuable feature nearly all enterprises will want in a cloud-based development tool, however, is the ability to collaborate. The ability to collaborate during development means teams can simultaneously view and edit the same code, share workspaces and check work in and out without duplicating efforts or interfering with others' development duties.
When evaluating cloud development tools, enterprises should also determine how well the tools will integrate. Can you easily work with a bug-tracking system as well as an IDE? Do you define a single set of access control rights for a development environment or do you need to define separate sets for source-code repository, issue tracking and project management tools?
Crowdsourcing your cloud development efforts
Unless you're managing a relatively small development project, you'll probably have multiple developers working together. And as mentioned, collaboration is key.
But coordinating coding efforts and tracking source code become a challenge when multiple developers are involved, especially if they're all using different IDEs or saving code outside a centralized repository. CollabNet's CloudForge is a cloud-based code management platform that allows developers to create team workspaces and integrate development tools, such as Agile management and source code management tools.
In addition to coordination challenges, gathering, compiling and building applications from source code can also be difficult. To manage this, software developers have created a wide array of tools to streamline the process, often by automating test and support deployments.
When moving development to the cloud, it's important to understand how to automatically build applications. Linux developers, for example, can use a utility that determines which components of a large program to compile and then does so automatically.
Another option is to continue to use tools initially meant for on-premises infrastructures. This approach works well if you're developing applications in an Infrastructure as a Service (IaaS) platform, which can be built to closely reflect an on-premises environment. However, if you are deploying applications to PaaS, you'll want to ensure the tool supports deployment to that particular platform.
Ideally, you should be able to integrate other development tools, such as those for project management and issue tracking, into your development efforts. If you are supporting a midsized or large development team in the cloud, or if you have developers in multiple locations, you may want to consider a service that integrates multiple functions. Codesion supports code management, bug tracking, issue tracking, Agile lifecycle management and backups.
Developers can continue to build applications with their existing tool suites, but it can be more advantageous to use tools focused specifically on deploying to the cloud. Consider how tools align with the type of service to which you will deploy -- IaaS or PaaS -- when making your choice. And don't forget to consider how these tools support developer collaboration.
Dan Sullivan, M.Sc., is an author, systems architect and consultant with more than 20 years of IT experience. He has had engagements in advanced analytics, systems architecture, database design, enterprise security and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail and education. Dan has written extensively about topics that range from data warehousing, cloud computing and advanced analytics to security management, collaboration and text mining.