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:

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!

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!

Certified ScrumMaster – A Look Back

I funny thing happened since my last post…. I became a Certified ScrumMaster!

Some basic points before I ramble:  For the uninitiated, a ScrumMaster is one of the three roles that make up a Scrum team.   For the further uninitiated, Scrum is a software development process that attempts to fulfill Agile software development principles.

For the even further uninitiated, Agile is a set of principles that seeks to produce faster and better solutions via software by engaging customers early and often.  These principles have been distilled into the Agile Manifesto, which is generally one’s first introduction to Agile.  I’ve also recently been introduced to the Manifesto for Software Craftsmanship, which uses the cadence of the Agile Manifesto to add a focus on quality and professionalism to our work.

The main idea of Agile is that customer needs and value opportunities can and do change frequently, often several times a day.  Therefore, the process by which software solutions intended to meet those needs are built must be just as flexible, if not more.  This means that software developers and the customers they serve should not be held prisoner by yesterday’s expectations, but should be ready and able to respond to changes over the course of their projects.

One of the more popular frameworks used to help a development shop become more Agile is called Scrum.  Scrum consists mainly of static teams that focus on a cadence of time-boxed ‘sprints,’ each with their own concise and explicit goal.  At the end of a sprint, the team presents (and usually deploys) the finished software and gathers feedback on their work.  Additionally, the team self-evaluates and adopts changes necessary to improve their own performance.  They are then ready to proceed with the next sprint.

For our two day class, we were first presented with the history and framework of Agile. Then we were formed into teams and tasked with working through a simulation of Scrum.  This included planning our goals for the overall product, organizing sprints that would result in a production-ready result and presenting that result for evaluation.

I’ve been working on Agile teams for a couple of years now and am a fan of the approach.  One of the most valuable takeaways that I had from the class was knowing to observe the Agile principles before any process.  Scrum (or even Agile) is not a magic bullet that’s appropriate to all projects.  Therefore, you need to remember whether or not your approach is in keeping with the value you’re intending to realize, rather than just blindly following a process.  Some other explicit warnings were, “If you’re not automating you regression testing, you can’t be Agile.”  The same premise goes for controlling your inputs.  Meaning, you need to have that concise and explicit goal, rather than trying to ‘boil the ocean’ and do everything at once.

I’d love to hear any feedback on this post and invite you to share your own experiences with Agile or Scrum.  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!

Finding a host for .NET/MS applications

One of the questions you might ask yourself is, where can I host stuff online.  My personal experience with 3-party hosting (including this blog) has been limited entirely to LAMP stack providers.  While these providers are fine for general website hosting, none of them have offered an option for hosting .NET web applications.  So, if I plan to build and host web content written in C# and other .NET languages, I’ll need to find a suitable provider.

 

Luckily, some quick Google-Fu turned up a Hosting Provider Directory right on ASP.NET :  Link

 

My goal here was to identify some low-cost providers that might be suitable for sandbox or Proof of Concept style tinkering.  Basically, something that would let me experiment as an individual without breaking the bank.  I’m not looking for high performance or a beefy server, just somewhere to take things out for a test spin.  Some things I’ll want would be a host that supports a current .NET framework and with a DB backend (MS-SQL would be great but I could live without it).

 

Here are a few examples of what I found:

 

Arvixe : Link

 

arvixe

Arvixe showed up as a top contender in a couple of online reviews.  After checking out their website, it looks like they offer everything that I might look for at a cost of $5/month.  Certainly something worth looking into.

 

WinHost : Link

 

winhost

WinHost has shown up in a lot of ads for me lately so I decided to take a look at their offering.  Their Basic Plan price was $3.95/month but they require a 2 year commitment in order to achieve that price.  Additionally, they only offer a single site and a single DB.  In order to move beyond that, I’d have to commit to their Max Plan which is $7.95/month.

 

Azure :  Link

azure

This is where I’ve been spending a lot of my time lately.  Azure allows the customer to pick and choose all of the components that go into an environment and pay for as little or as much as you like. Individual nodes and other infrastructure can be provisioned at will and there’s an estimated monthly cost for each item as they are provisioned.  While I do like the idea of paying for dedicated and infrastructure on-demand, I am a little daunted by the pricing, as even a Basic server costs $55/month by itself.

 

If you’re interested in an itemized catalog of Azure offerings, here’s a link to their pricing calculator : https://azure.microsoft.com/en-us/pricing/calculator/

 

To me, the interesting thing about Azure hosting is that they offer an upfront trial ($200 credit) for any user.  Additionally, you are only charged for when your resources are actually used.  So, if you take a server that’s ~$50/month to run, but only run it for a fraction of the month, you might very well come in under the other options listed below.   Not ideal for a commercial website that needs to be up 24/7, but might be just fine for the occasional evening of tinkering.

 

So, I’ve opted at this time to start a trial account of Azure and see how it behaves for my purposes.  I’ll post a follow up on this at the end of the trial.

 

If any of you have ideas for .NET hosting or have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

 

Thanks for looking in!