AWS Certified Developer – Wrap Up



“I hear you’ve got a saying: ‘Understanding is a three-edged sword.’ Well, we’ve got a saying too: ‘Put your money where your mouth is.'” – John Sheridan

Over the past few months, I’ve been taking prep courses and otherwise studying for the AWS Certified Developer exam.  The goal that I originally set was to have this finished by the end of summer.  While I’m a couple of weeks late, I’m proud to say that I passed!

I want to give an endorsement of A Cloud Guru’s coursework and practice exams in being crucial to my preparation and practice leading up to the exam.  While certifications are meant to essentially ratify existing knowledge, taking a timed and closed book exam can be very daunting for those of us who can generally check our phones if we’re not sure of specs or limits off the top of our head.

So, what’s next?  I’m not really sure other that to say that AWS and other cloud framework knowledge fits very well into the ServiceNow space with offerings like Discovery and Orchestration.  If there’s continued benefit from gaining knowledge in this space, then I’ll probably dive a little deeper.

Thanks to all for your support and encouragement during this journey.I invite you to share your own experiences and opinions on AWS certification or certifications in general.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Resources:

Integrating Amazon Lex with ServiceNow

In a recent post, I covered creating chatbots in AWS Lex and created a simple bot for ordering jellybeans.  As promised, I took my bot and integrated it into a custom page in ServiceNow’s Service Portal.  While I’ve worked on several integrations in this space before, this was my first time integrating an AWS service into ServiceNow.

In order to integrate Lex, I needed to provision the following:

  • A ServiceNow instance (Helsinki or later)
  • An AWS Account with a Lex Bot (Created during my previous experiment)
  • An AWS User with the AmazonLexRunBotsOnly policy assigned

With these components in place, it was time to decide on an architecture.  I needed a UI for users to chat with Lex, client-side code to handle the text and transact with Lex, and finally some server-side code to initialize parameters for the service layer that are stored in system properties.

For the UI, I created a new Portal, Page and Widget to host all of the above.   The Javascript SDK for AWS is included via a CDN link.  I would have preferred to keep this piece server side, but the current offerings for the SDK are limited to either client-side or server-side with Node.js, which isn’t available for now.

What was critical to keep server side were the application credentials for the service account itself.  There are several properties that must be gathered from your AWS configuration and added as system properties in the ServiceNow platform.

With all this in place, it was time to test!  First by sending a message to Lex to invoke the Intent for ordering a jelly bean:

Then to follow the same flow of the Intent, telling the bot what flavor I want:

And finally confirm my order:

Depending on how you’ve configured your bot, you can either have Lex return parameters to ServiceNow or to pass them forward to an AWS Lambda or other endpoint.  It’s easy to see the potential here for using Lex to drive another entry point for your Service Catalog or even things like Orchestration.

If you’d like to take a look at the app, I’ve got it on my GitHub here.  I’m interested in any feedback you have as well as anything to share on ServiceNow app development or AWS Lex.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

AWS Certified Developer – Update

Since my last update, I’m proud to say that I’ve completed my course!  The major components of the second half of this course concerned Storage and Database implementations.  Here’s a brief rundown.

How is Storage handled on AWS?

The main storage offering on AWS is called S3.  This is basically bulk storage in AWS offered for a flat fee based on usage.  If you’d rather use a dynamic and shared storage that auto-scales, you’d set up a resource in Elastic File System.  The platform offers several different configurations based on availablity and performance expectations.   Versioning and replication of containers is supported.  Short and long term backups are covered by Glacier.  This is long term storage of snapshots of data at a lower fee, but binds you to a time commitment.  Those of us that have Disaster Recovery responsibilities can use this to implement Father->Grandfather backup strategies.

How are Databases implemented in AWS?

The conventional implementation of databases is by provisioning virtual DB instances.  You can choose your preferred framework, like MS-SQL or Oracle and then select the tier you need within that framework.   For the NoSQL crowd, there’s Dynamo DB which offers low latency databases for high traffic services and data analysis tools.  Certification note: The exam is mentioned by the course as being very heavy on Dynamo DB.  Calculating performance is a prominent item on the cert as you have a lot of fine tuning control with access. The key is to find that sweet spot where your bandwidth is sufficient without over provisioning.

While IAS, EC2 and S3 made up the lion’s share of the course, the remainder was short overviews of additional services such as:

  • Simple Queue Service + Simple Notification Service – Used as a clearinghouse to trigger shared events throughout your environments.
  • Simple Workflow Service – Used for management of back end processing in your API or Service Layer.
  • Cloud Formation – A framework for creating templates that provision predetermined purpose-built sets of AWS resources.
  • Elastic Beanstalk – Basically a wizard for provisioning auto-scaling application hosting environments that are immediately ready to run code.
  • Shared Responsibility Model – An overview of the demarcations between what integrity concerns the customer is responsible for as well as AWS.
  • Route 53 – More of an actual overview of DNS architecture rather than anything special about its AWS implementation.
  • Virtual Private Cloud (VPC) – This covers configuration of public and private zones of resources and defining rules for interoperation between them. Basically, taking everything we’ve learned and pulling it all together into something useful at the enterprise level. The analogy used for this is to think of a VPC as a logical data center.

Now that I’ve completed the course, it’s time to put my money where my mouth is and successfully pass the exam by the end of summer per my original commitment.  Wish me luck!

I’d love to hear any feedback on this post and invite you to share your own experiences and opinions on AWS, either your own projects or learning tracks. As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Chatbots w/Amazon Lex

Recently, I attended a learning event put on by a local developer group: DevICT, which is a community for local developers in Wichita, KS.  The topic was Amazon Lex, a chat platform that you use to build your own chat bots.  Then these bots can respond to either text or voice from users and do useful things based on the outcomes of those interactions.

Setting up Lex is pretty straightforward.  After logging in to your AWS Console, you can navigate to the Lex product and it brings up your list of bots and controls to create new ones.  Once you’ve created a new bot, you’ll need to define Intents and Slots.  To put this in programmer parlance, if you think of your bot as an API framework or class, you could define Intents as methods and Slots as arguments.

For my bot’s first Intent, I took inspiration from a recent trip to the Jelly Belly jelly bean factory in California.  (The tour is free and great for the short people: i.e. kiddos)  So, I created an Intent called ‘IWantAJellyBean’ and seeded some phrases that would prompt the bot to start asking questions to fill in all the Slots.  This is the bridge between plain language and something the API can understand and the platforms language processing can imply the correct intent based on what you say or type.

Next, for my Slot, I created a short list of flavors.  This essentially acts as a type for fulfillment of the Intent.  When the Intent is invoked, a prompt that you configure in the framework adds a prompt to the chat to gather additional information from the customer.

Once all the information is gathered via the chat, the bot prompts one more time to confirm fulfillment of the order.  The confirmation is defined by the developer and you can determine the outcome based on the customer’s response.  Then, you can choose to trigger an event based on what happens as a result of the chat.  You can even leverage an AWS Lambda to take the results of the chat and trigger downstream activity.

Next comes the fun part: Talking to your bot!  This is mostly a debugging step but I was really impressed by how I was able to just use voice to walk through the test.  It’s very easy to see the potential of this platform to automate interactions with individuals and trigger requests or other business logic in your infrastructure.

I want to thank the individuals at DevICT for a fun and interesting learning experience.  If you happen to be in the Wichita area, I would highly suggest stopping by for their events, which can be found on Meetup or Facebook.

I’m interested in your experiences with Lex and AWS in general.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

AWS Certified Developer – Progress So Far

In my post about certifications, I mentioned starting a certification course regarding Amazon Web Services development.  Bit by bit, I’ve been making progress through the course itself.  The structure is pretty straight forward.  It begins with an overview of what AWS is overall and what you should expect to get out of the course.  The idea primarily is to prep you for the basic Associates certification, so they’re going for breadth as opposed to depth.  That’s fine with me!

First things first – Identity Access Management

Some of the first things to consider when building a new app is who your audience is and what they need to be doing.  Trying to shoehorn a security or roles model after you’re under way is just asking for it.  Therefore, the course starts us off at the beginning by showing us how to build roles and use them programatically through the CLI.

One of my more interesting takeaways from this was locking down your root access using Multi Factor Authentication.  This involves creating a key object on AWS and mapping it to an authenticator app on my phone.  The premise here is that no one should be able to get root in your environment based on a simple password.  It’s a good habit to get into before you entrust important data or business logic to the cloud.

What is EC2?

Once you have your roles in place, it’s time to provision resources.  EC2, or Elastic Compute Cloud, is where you can provision various types of virtual compute hosts.  There are options based on conventional questions like number of processors and memory, or you can request role based hosts optimized for graphics or high memory or transaction-intensive needs.

This is one of the longest sections of the course, but an important term that you might hear a lot about is something called Lambda.

What is Lambda?

Lambda is Amazon’s event driven code solution where you have a function or service waiting on a call and it responds only as needed.  So, you can think of it as a sort of headless API where all you have to worry about is your function or service itself and none of even the typical PaaS concerns such as host or middleware setup or general availability.

One example of Lambda pointed out by the course is Amazon’s Alexa service which is available on their home devices, such as the Echo.  I’ve only tinkered with Lambda once or twice, but the potential is very exciting.  I’m looking forward to a deeper dive at a later date.

At this point, I’m only about a third of the way through but will be spending more time on it during May and June with a goal of taking my certification over the summer.  For those who are interested, the course is put together by a company called A Cloud Guru.  They have several other courses and tracks for AWS available at their website and at Udemy, where I’m taking my own course.

I’d love to hear any feedback on this post and invite you to share your own experiences and opinions on AWS, either your own projects or learning tracks.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Why Earn Certifications? I’ll Tell You..

Last post, I shared a story about earning my Certified ScrumMaster badge. Often, I’ll have conversations with other IT professionals about the usefulness of certifications and whether or not to pursue them. The common conclusion, as with most things in this business, is ‘It Depends.’

When I was first starting out in this field, I had a 1-year clerical vocational degree, no professional IT experience and a non-trivial stack of practical knowledge. So, how does a 20-something with this background get an interview? The answer for me was certifications.

While working a temp job answering phones, I dove into a book on the CompTIA A+ certification. For those not familiar, this is a fundamentals certification dealing with PC architecture and troubleshooting. Once I earned this certification, I was able to parlay that into interviews and an eventual Field Tech position.

Are certifications better than a traditional education? Again, the answer is ‘It Depends.’ While certifications are intended to ratify a candidate’s existing knowledge, discerning whether or not individuals actually have that knowledge can be tricky. This is where technical and knowledge-based interviews can be useful. In my opinion, in our current pool rife with graduate degree holders applying for entry level positions and mounting student debt, focused vocational training and certification is a solid option. And for those of us in the midst of our career paths, it’s a useful avenue to stay current and continue to demonstrate proficiency in our craft.

As part of an earlier post, I staged a Selenium server on Amazon’s EC2 service. Given the growing popularity of AWS, it’s something that people in our trade should take the time to become familiar and proficient with.  In order to grow in this space (and take advantage of the free trial period), I also picked up the Amazon Certified Developer course from Udemy.  Over the next 6 weeks, I’ll be making my way through the coursework and ultimately taking the certification.  Wish me luck!

I’d love to hear any feedback on this post and invite you to share your own experiences  and opinions around certifications.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!