Choosing a Platform for AWS Development
No “right” or “wrong” platform exists to use for AWS development; you should use the one that’s best for your intended purpose, given your specific set of programming skills and the requirements of the application. The following information discusses some of the many options you have in creating a development environment.
Considering the AWS-supported options
To define a platform, you must consider a number of issues. The first consideration is the operating system. When working in the desktop environment, as most developers still do, you have the three basic options:
- Mac OS/X
AWS provides support for all three of these operating systems in the form of both tools and SDKs. Depending on the specific version of Linux you use, you may have to compile your own tools, but the support is still available. Windows and Mac users have the comfort of knowing that AWS provides binaries that are easy to install and use.
Because both users and developers have become more mobile and demand to perform tasks anywhere, using any device, AWS also provides a level of support for mobile devices. These options currently help developers to work outside the office using a mobile device. However, the support you obtain in these environments can appear limited when compared to the desktop environments. For example, you might not be able to perform some tasks because of limits in the device environment or security concerns. Even so, AWS provides access to three major mobile operating system environments:
- AWS Mobile SDK for Android
- AWS Mobile SDK for iOS
- AWS SDK for Unity
Deciding on an operating system is only the first step. The second step is to choose a programming language. The languages supported often depend on the service you want to use. Some services, such as S3, support a broader range of languages because Amazon expects developers to use them in a wider set of circumstances. However, the following list shows the language that AWS documents as being supported for most services:
- Windows and .NET
You may not see your programming language of choice in this list. Fortunately, a third party may offer the support you need or the AWS documentation might not be complete. When in doubt, look for alternative sources of information for programming language support. For example, this article discusses how to use R with AWS, even though you don’t see R listed as one of the supported languages. Given that this is an Amazon blog and not a third-party blog, you need to consider that the AWS documentation is simply outdated and Amazon will change it later.
Only you can answer the question of which operating systems, languages, and tools to use for your development project. However, you do need to consider these issues when making a choice:
- Cost: The choices you make for a platform also depend on cost. The relatively high speed of today’s components has erased many of the issues that used to keep people devoted to a particular combination based on speed alone. You can create a platform using open source products that cost little or nothing today.
- Local ecosystem: The skills possessed by the developers in your organization partly determine the platform you create. In addition, you must consider local resources and needs. For example, if your AWS application must interact with Office applications, using a .NET language on Windows might be your only choice, even if another language might actually do the job with a little less effort and at a lower cost. Changing the local ecosystem completely takes time, effort, and skills that your organization might not possess.
- Problem domain: The goal of all applications is to manipulate data. All languages and tools can help you accomplish that task, but some are decidedly better than others at getting the job done. A large part of the process of determining platform characteristics is to determine how, when, where, and why you want to manipulate data. For example, R makes a much better data analysis language than C# does, but C# excels at interacting with other applications, such as Office.
Using Python for local examples
You can use the Continuum Analytics Anaconda Python setup. It provides a notebook environment in which to run code. The notebook actually runs in a browser, so it’s extremely flexible and doesn’t require you to install a fancy Integrated Development Environment (IDE) to become productive. The Jupyter Notebook environment also supplies a place to display graphics and enables comprehensive commenting in an easily printed (report) format. However, you can also use pure Python and its tool. It won’t be quite as convenient, but some people may prefer the ultimate in interactivity that the pure Python environment provides.