Choosing a Platform for AWS Development - dummies

Choosing a Platform for AWS Development

By John Paul Mueller

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:

  • Linux
  • Mac OS/X
  • Windows

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:

  • Go
  • Java
  • JavaScript and Node.js
  • PHP
  • Python
  • Ruby
  • Windows and .NET
  • C++

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:

  • Characteristics: The characteristics of the operating system, language, and tools you use to work with AWS determine the difficulty of creating applications that users find helpful. For example, even though .NET languages, like C#, have a steep learning curve, they also have a significant array of enterprise-level features and tools that make large enterprise projects easier. However, you might find that data analysis is much easier and faster with Python. If strong multiplatform support is a must, you might want to try Java instead. Developers who specialize in web applications might want to use JavaScript with Node.js. In short, there is no one perfect operating system, language, or toolset — just the combination that works best for you.
  • 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 JavaScript for browser examples

The use of JavaScript makes it possible to see precisely what you need to do and how you need to do it when creating web-based AWS applications. In addition, JavaScript is easy to change and instantly run again without the inconvenience of recompiling your application. It also runs on just about every platform out there, even if you choose (as unwieldy as it might be) to try to run code on your smartphone.

Because a smartphone or tablet isn’t a particularly good development environment, JavaScript is a good choice when working with browsers found on Windows, Linux, and Mac systems.

Some examples will require the use of Node.js. The Node.js library is simply a set of tools that provides a runtime environment for JavaScript applications.

Using Python for local examples

Python is a good choice for experimenting with AWS because you get nearly instant feedback on the coding you perform with it, plus the language has only a small learning curve. In addition, as with JavaScript, Python is free and open source. Other languages also work for this purpose. For example, Java also runs on every platform, but you must use a compiler to work with it, and some developers have security concerns about working with Java.

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.