Chapter 15
IN THIS CHAPTER
Using the Amazon offerings
Relying on third-party support
Getting the Bitnami tools
Using device emulators
Tools take a wide variety of forms, and you need to consider them all if you want to make your AWS setup everything you need it to be. When asked about tools, many developers narrow their focus to the development environment. They consider add-on libraries that make coding easier, or IDE add-ons that make the development process faster. However, when working in the cloud, the concept of a tool becomes much larger than just the development environment. You must also consider the cloud environment.
Because of the way Amazon has set up its site, you can easily miss those special offerings that might make the difference between an easy project and a hair-pulling one. The following sections offer some Amazon-specific solutions that you might not have considered.
Many of the AWS services give you the means to update their functionality directly. The update falls outside the range of AWS configuration. For example, when working with EC2, you can install localized programming languages and associated libraries. The additional functionality enables you to upload applications and run those applications from within EC2. For example, you can create a custom web service that runs like the web services you use locally, but have a cloud-based approach that makes them more accessible and achieve greater reliability.
The Tools for Amazon Web services page (https://aws.amazon.com/tools/
) offers a complete list of all the tools that Amazon provides, not just those that have appeared in the book. This page actually contains links to four kinds of tools that you can use to make your development experience better:
Amazon Marketplace (https://aws.amazon.com/marketplace/b/2649276011
) helps you locate third-party tools that you need based on search criteria you provide. As shown in Figure 15-1, you have a lot of choices to make in the Amazon Marketplace. Some of the choices aren’t apparent unless you spend time playing with the interface. For example, you can choose between AMI & SaaS (as shown in the figure) or Desktop in the search field.
The search filters also offer a great many choices. You can choose the software category, operating system, pricing plan, support type, free trial offering, delivery method, average rating, architecture (32-bit or 64-bit), region, and instance type. The software descriptions also provide you with the vendor name, product name, rating, version number, description, and all sorts of other useful information. Click one of the product links and you see even more information about that product, plus links to perform tasks such as downloading the software, when the option is available.
Amazon provides a wealth of forums on which you can ask for peer support with your AWS-specific issue. You can find a list of these forums at https://forums.aws.amazon.com/index.jspa
. Many of the forums give language-specific support. In addition, Amazon developers do sometimes visit the forums to offer additional help beyond that normally offered by peers. Obviously, the level of support, even with Amazon employee help, doesn’t quite match the paid support option at https://aws.amazon.com/premiumsupport/
.
You may decide to employ the shortcut of partnering with a third party to get your application up and running faster. The partner brings expertise to your organization that takes considerable time and effort to build.
The AWS Partner Programs page at https://aws.amazon.com/partners/programs/
describes the long list of partner types, any of which could be helpful to your development effort. However, the most useful developer options appear in the Technology Partner Programs location on the page. For example, members of the AWS SaaS Partner Program (https://aws.amazon.com/partners/saas/
) help you build, launch, and grow your application — allowing you to better focus on getting a working application put together.
Knowledge is power. If you want to power your way through the various issues you face when working through code, you need to find the knowledge that other developers already possess. After all, you may not know that certain tools exist, that they have certain features that you need, or that you can use them in unexpected ways. All these sorts of knowledge require that you either experiment to obtain the information on your own or get it from someone else. The following sections assume that you want to go the fast route and get it from someone else.
Going to school, which is essentially what taking any kind of course amounts to, won’t answer any immediate questions or help you use the tools better today. However, taking a course will help you over the long term to develop a better grasp of precisely how AWS works and how to employ various tools to make your development tasks easier. Third-party sites, such as Linux Academy (https://linuxacademy.com/amazon-web-services/courses
), enable you to get the education you need quickly and easily. Interestingly enough, you can even take a course on AWS Developer Tools at https://linuxacademy.com/amazon-web-services/training/course/name/manage-and-deploy-code-with-aws-developer-tools
.
When looking for an online course, make sure you choose sites that offer multiple methods of learning the material. Otherwise, you might find THAT the one learning method offered by a site doesn’t help you much. Sites that contain the following types of educational experiences tend to work best (obviously, some types of offerings, such as instructor-led training, cost more):
A number of online sites provide an interesting sort of information source, notes. For example, Compute Patterns (http://www.computepatterns.com/aws-notes/
) is a site that specializes in putting out bite-sized pieces of information that you can easily consume and then get right back to work.
Some blogs are also specialized and offer content in short bits. For example, the AWS Startup Collection (https://medium.com/aws-activate-startup-blog
) presents this sort of information.
If you want to find an ultimate source of AWS blog posts on every subject imaginable, check out the AWS Labs site at https://github.com/awslabs/
. This is actually a good place to discover what Amazon has in mind for the future. You can use these various information sources to get up and running quickly without having to waste time in classes when you need just one answer.
One of the more interesting blog entries you can find online is Chef Supermarket. The cookbooks you find here (https://supermarket.chef.io/cookbooks/
) give instructions for performing various tasks in an extremely terse but efficient manner. For example, check out the AWS developer tools post at https://supermarket.chef.io/cookbooks/aws_developer_tools
.
A few sites online contain repositories of information. One such site is the StratoScale wiki at http://www.stratoscale.com/wiki/display/privatecloud/Amazon+Web+Services
. The site categorizes various repositories for you, and the developer-related posts generally appear in the Operations and Management category at http://www.stratoscale.com/wiki/display/privatecloud/AWS+Operations+and+Management
. For example, check out the listing of AWS APIs, SDKs, and Developer Tools at http://www.stratoscale.com/wiki/display/privatecloud/AWS+APIs%2C+SDKs+and+Developer+Tools
.
Going to the Bitnami site (https://bitnami.com/stacks/developer-tools
) is a bit like going to a candy store. You like everything you see and have no idea what to pick first. The Bitnami site (https://bitnami.com/
) acts as a library for server-based software of all sorts, not just developer tools. In fact, you can find just about anything you can imagine and more than a few things that you didn’t know existed. The site can seem overwhelming, but using the stacks entries (https://bitnami.com/stacks
) makes it easier to manage.
In all the discussions you read, most of them leave out one essential fact: You can’t see how your application works on other devices unless you own those devices or rely on an emulator. You definitely won’t own all the devices that your users employ unless you have a vault of money stashed somewhere, so the emulator route is the one that most developers use. Taking the shotgun approach to emulators isn’t a good idea, either, because trying to test your application against every emulator out there just won’t work. Here are some tips for working with emulators: