<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kristi Perreault</title>
    <description>The latest articles on Forem by Kristi Perreault (@kristiperreault).</description>
    <link>https://forem.com/kristiperreault</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825436%2F9c764f96-1101-4d6a-bc34-046ed8abb802.jpeg</url>
      <title>Forem: Kristi Perreault</title>
      <link>https://forem.com/kristiperreault</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kristiperreault"/>
    <language>en</language>
    <item>
      <title>Serverless - Beyond the Basics</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Fri, 17 Mar 2023 22:50:42 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-beyond-the-basics-kom</link>
      <guid>https://forem.com/aws-heroes/serverless-beyond-the-basics-kom</guid>
      <description>&lt;p&gt;Well folks, it appears the Serverless week for &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps" rel="noopener noreferrer"&gt;90DaysOfDevOps&lt;/a&gt; has (already) come to an end. We have covered a ton of topics in serverless to get you started, and hopefully you're already well on your way to building your first serverless, event-driven application! We've &lt;a href="https://dev.to/aws-heroes/what-is-serverless-4d4p"&gt;defined what serverless means&lt;/a&gt;, we've talked about everything from &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/welcome.html" rel="noopener noreferrer"&gt;lambda functions&lt;/a&gt;, to &lt;a href="https://aws.amazon.com/dynamodb/" rel="noopener noreferrer"&gt;DynamoDB tables&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html" rel="noopener noreferrer"&gt;Step Functions&lt;/a&gt;, &lt;a href="https://aws.amazon.com/eventbridge/" rel="noopener noreferrer"&gt;EventBridge&lt;/a&gt;, and so many other core &amp;amp; supporting AWS services to aid in your development journey. Although it's been a very high-level overview, I truly hoped you have enjoyed our week together, and have learned a thing or two about serverless development. Even if you've left this week with more questions than answers, I would say I've done my job - which is, made you interested and curious enough about serverless to want to explore it even more!&lt;/p&gt;

&lt;p&gt;Instead of going into a ton of depth on various topics in serverless on our last day, I thought it would be much more useful to provide you all with resources where you can go to learn more. The problem is, there is so much content, so many well-formed opinions, and tons of sample projects out there, &lt;strong&gt;&lt;em&gt;I&lt;/em&gt;&lt;/strong&gt; don't even know where to begin! I know that if I start to list out individuals or blogs, I am going to forget so many, and not give proper credit where credit is due, so instead, I will provide you with some places or projects to get started, and let you explore on your own and form your own thoughts &amp;amp; opinions. The only ask I have for you is this - &lt;strong&gt;&lt;em&gt;please&lt;/em&gt;&lt;/strong&gt; do your best to support and encourage diversity &amp;amp; our minority content creators. Too often I see folks share lists of their favorite people, accounts, conference talks, blogs, or open source projects, and there is no diverse representation. There are tons of incredible content creators (or to-be content creators!) of all different backgrounds and identities that never get enough credit, and if all of us can help in any small way, it can make a huge impact. I encourage you to take advantage of the comment section below to promote some of your favorite diverse individuals - I'd love to add them to my network too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4269usgbdjkv84wcpxk2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4269usgbdjkv84wcpxk2.jpg" alt="Group hug, since we're all friends now. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks again for taking this serverless journey with me this week, and please enjoy this list of more resources to explore. Until next time, my serverless friends!*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources to Learn More&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; - Blogging platform with tons of great content&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; - Blogging platform with tons of great content, specific to developers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://acloudguru.com/" rel="noopener noreferrer"&gt;aCloudGuru&lt;/a&gt; - Video learning platform, great for certifications&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://serverlessland.com/" rel="noopener noreferrer"&gt;ServerlessLand&lt;/a&gt; - All things serverless, resources &amp;amp; announcements from AWS&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.twitch.tv/aws" rel="noopener noreferrer"&gt;AWS Twitch&lt;/a&gt; - Space for podcasts, walkthroughs, and casual conversations with AWS employees&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/serverless/" rel="noopener noreferrer"&gt;AWS Docs&lt;/a&gt; - Official documentation for all things AWS serverless&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/certification/" rel="noopener noreferrer"&gt;AWS Certifications&lt;/a&gt; - Explore getting certified&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/@amazonwebservices/featured" rel="noopener noreferrer"&gt;AWS Youtube&lt;/a&gt; - Great deep dive talks &amp;amp; features on AWS services from years past&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/cdk/" rel="noopener noreferrer"&gt;AWS CDK&lt;/a&gt; - Infrastructure as Code tool, popular in serverless development&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/serverless/sam/" rel="noopener noreferrer"&gt;AWS SAM&lt;/a&gt; - Infrastructure as Code tool, specifically for serverless development&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/developer/community/usergroups/?community-user-groups-cards.sort-by=item.additionalFields.ugName&amp;amp;community-user-groups-cards.sort-order=asc&amp;amp;awsf.location=*all&amp;amp;awsf.category=*all" rel="noopener noreferrer"&gt;AWS User Groups&lt;/a&gt; - Get involved in your local community!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/developer/community/heroes/?community-heroes-all.sort-by=item.additionalFields.sortPosition&amp;amp;community-heroes-all.sort-order=asc&amp;amp;awsf.filter-hero-category=heroes%23serverless&amp;amp;awsf.filter-location=*all&amp;amp;awsf.filter-year=*all&amp;amp;awsf.filter-activity=*all" rel="noopener noreferrer"&gt;AWS Hero Program&lt;/a&gt; - Learn more about our community evangelists&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/developer/community/community-builders/" rel="noopener noreferrer"&gt;AWS Community Builder Program&lt;/a&gt; - Keep this bookmarked for the next round of applicants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;….and so much more out there for you to explore!&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps" rel="noopener noreferrer"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>community</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Serverless &amp; Well Architected</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Fri, 17 Mar 2023 00:48:53 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-well-architected-40jn</link>
      <guid>https://forem.com/aws-heroes/serverless-well-architected-40jn</guid>
      <description>&lt;p&gt;Over the last few days, we've discussed a number of topics in the serverless space, covering &lt;a href="https://dev.to/aws-heroes/serverless-storage-50i3"&gt;storage&lt;/a&gt;, &lt;a href="https://dev.to/aws-heroes/serverless-apis-5bdp"&gt;APIs&lt;/a&gt;, &lt;a href="https://dev.to/aws-heroes/serverless-compute-3bgo"&gt;compute&lt;/a&gt;, and &lt;a href="https://dev.to/aws-heroes/serverless-orchestration-3879"&gt;everything in between&lt;/a&gt;. We've got all the components to build a fully functional, robust application in place, but before you run off and create The Next Big Thing, we have to cover one more crucial topic: &lt;a href="https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&amp;amp;wa-lens-whitepapers.sort-order=desc&amp;amp;wa-guidance-whitepapers.sort-by=item.additionalFields.sortDate&amp;amp;wa-guidance-whitepapers.sort-order=desc" rel="noopener noreferrer"&gt;Well Architected&lt;/a&gt;. The Well Architected Framework is a set of guidelines or best practices that AWS introduced a few years ago. The six "pillars" of Well Architected are &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html" rel="noopener noreferrer"&gt;Security&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html" rel="noopener noreferrer"&gt;Cost&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/welcome.html" rel="noopener noreferrer"&gt;Operational Excellence&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html" rel="noopener noreferrer"&gt;Reliability&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html" rel="noopener noreferrer"&gt;Performance Efficiency&lt;/a&gt;, and &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html" rel="noopener noreferrer"&gt;Sustainability&lt;/a&gt;. These concepts are not new, but by defining them in this way, AWS has established a reference that is easy to use and understand when evaluating your applications for best practices. In fact, AWS has created a &lt;a href="https://aws.amazon.com/well-architected-tool/" rel="noopener noreferrer"&gt;Well Architected Tool &amp;amp; Review process&lt;/a&gt; centered around the six pillars, asking you questions about your application to review yourself or with your team. Before you start building your application, I would highly recommend you go through a formal Well Architected Review. You don't need to answer every single question, in fact some might not be applicable, but going through this exercise gets you thinking about how you want to architect your application, even highlighting key decision trade-offs, or potential issues that you haven't thought of just yet. In the subsections that follow, we'll talk about each of the pillars in a little more detail, and I'll briefly cover &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/userguide/lenses.html" rel="noopener noreferrer"&gt;Well Architected Lenses&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw21as3t5slilesn51nvb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw21as3t5slilesn51nvb.jpg" alt="Lock keeping items secure. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simply put, how are you securing your app? Are you using authorization and authentication with &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html" rel="noopener noreferrer"&gt;IAM users, roles, and policies&lt;/a&gt; to limit access to your resources? Setting up &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html" rel="noopener noreferrer"&gt;permission boundaries&lt;/a&gt; and using &lt;a href="https://aws.amazon.com/kms/" rel="noopener noreferrer"&gt;KMS keys&lt;/a&gt; for encryption? This can look like any number of measures, but the important idea here is, are you thinking about how to secure your app? Some of the questions in this space may not be applicable. This could be an app just for you, or one that isn't storing any data to worry about, or it could be wide open to the public and have no personal information to worry about. You don't need to have every single security measure in place for your application, but you do need to think about these things, and make conscious, defendable decisions about your &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html" rel="noopener noreferrer"&gt;application security&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4nhh711kxnt3s66robn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4nhh711kxnt3s66robn.jpg" alt="Jar of money with a plant. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is pretty straightforward - I don't know anyone who gets excited when their cost or bills go up in price. Obviously, we all want to optimize for a low-cost application solution, whether this is for personal use, your business, or the company you work for (you may not care about that one personally, but I can tell you THEY certainly care about the bottom line). Look at the &lt;a href="https://aws.amazon.com/pricing/?aws-products-pricing.sort-by=item.additionalFields.productNameLowercase&amp;amp;aws-products-pricing.sort-order=asc&amp;amp;awsf.Free%20Tier%20Type=*all&amp;amp;awsf.tech-category=*all" rel="noopener noreferrer"&gt;pricing model&lt;/a&gt; and see if there are any ways to cut costs. Some easy ones could be to minimize the number of API calls you're making, or utilize &lt;a href="https://awslabs.github.io/aws-lambda-powertools-python/2.9.1/" rel="noopener noreferrer"&gt;Lambda Powertools&lt;/a&gt; to optimize your lambda function for memory &amp;amp; performance. If you've exhausted every option here, that's okay. Cost is typically a trade-off; you may be ok spending more money to make sure your application is secure, reliable, and not hindered in performance. Again, the idea here is that you're actively aware of where your money is going, and you've &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html" rel="noopener noreferrer"&gt;reviewed your optimization options thoroughly&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational Excellence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3m75wo0y0yo2max4eww.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv3m75wo0y0yo2max4eww.jpg" alt="Group working at laptop computers. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of my favorite topics to talk about is '&lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" rel="noopener noreferrer"&gt;Clean Code&lt;/a&gt;', or better known as best practices within your code. Although this could cover many of these pillars, it arguably fits squarely within &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/welcome.html" rel="noopener noreferrer"&gt;Operational Excellence&lt;/a&gt;. This pillar is all about building robust applications, code that is easy to understand, read, and maintainable, and having effective development processes in place. Creating small, logical code blocks, making small &amp;amp; frequent code changes, &lt;a href="https://about.gitlab.com/topics/version-control/what-is-code-review/#:~:text=Code%20reviews%2C%20also%20known%20as,developers%20learn%20the%20source%20code." rel="noopener noreferrer"&gt;reviewing code&lt;/a&gt; periodically, having ample error handling, logging, and monitoring, and so much more fall into this category. For me, this one is sort of like a "catch all" pillar; not because it isn't well defined, but because it encompasses so many parts of the application development cycle. Many of the pillars overlap, but it is very likely that this one in particular will have overlap with one or more of the other pillars at any given time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6u0e706lmolbibz4egz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6u0e706lmolbibz4egz.jpg" alt="Chairs relying on each other. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is your application stable? Do you &lt;a href="https://aws.amazon.com/backup/" rel="noopener noreferrer"&gt;backup your data&lt;/a&gt; regularly? Do you have &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/web-application-hosting-best-practices/failover-with-aws.html" rel="noopener noreferrer"&gt;failovers&lt;/a&gt; or other fail-safe measures in place? Can your application handle a large influx of traffic, or will any changes to the 'average' case break your current functionality? The key question this pillar asks is - are you prepared? Outages are never fun, especially when they significantly impact your customers, but they can (and they do) happen to the best of us. By reviewing the questions in the reliability pillar, you are thinking about your application's &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html" rel="noopener noreferrer"&gt;disaster recovery plans&lt;/a&gt;, backing up your data, and having processes in place for the 'worst-case scenario'. Hopefully by completing a &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html" rel="noopener noreferrer"&gt;reliability review&lt;/a&gt;, these things don't occur as often, or aren't as widespread as they might've been before a review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Efficiency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s0bfsx4dfn0k6g5nuaa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s0bfsx4dfn0k6g5nuaa.jpg" alt="Performance on the track. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Closely related to the Operational Excellence and Reliability pillars, the &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html" rel="noopener noreferrer"&gt;Performance Efficiency&lt;/a&gt; pillar is, you guessed it, all about how well your application is performing. What I enjoy most about this pillar is if you're taking advantage of serverless architectures, you're already well on your way to having this one covered, as it's one of the &lt;a href="https://aws.amazon.com/blogs/apn/the-6-pillars-of-the-aws-well-architected-framework/" rel="noopener noreferrer"&gt;five design principles&lt;/a&gt; to adhere to. This is about your application running smoothly, scaling effectively, and taking advantage of only the resources you need. This is another big "trade-off" pillar, since you may compromise your performance in some cases to comply with security or save on cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sustainability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlr4isgicbiitvpqfwui.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlr4isgicbiitvpqfwui.jpg" alt="Person holding a plant. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html" rel="noopener noreferrer"&gt;Sustainability&lt;/a&gt; is a recent addition to the Well Architected pillars, and I think it's a good one. It was &lt;a href="https://aws.amazon.com/blogs/aws/sustainability-pillar-well-architected-framework/" rel="noopener noreferrer"&gt;introduced at the end of 2021&lt;/a&gt;, and even though it's a focus I love to see, it also means there has not been a ton of guidance shared to optimize for sustainability. If you're invested in areas involving hardware, AI/ML, large sets of data, IoT, etc., this is a bit more obvious to contend to - simply put, you want to use less resources, and more sustainable (or at least recyclable) hardware. WIth serverless, you are already scaling automatically, only paying for what you use, and optimizing for your &lt;a href="https://aws.amazon.com/event-driven-architecture/" rel="noopener noreferrer"&gt;event driven architecture&lt;/a&gt;, which makes it more difficult to find areas to cut down on usage. My best advice is to review your architecture early &amp;amp; often, and continually try to find ways to &lt;a href="https://www.nature.org/en-us/get-involved/how-to-help/carbon-footprint-calculator/#:~:text=A%20carbon%20footprint%20is%20the,is%20closer%20to%204%20tons." rel="noopener noreferrer"&gt;lower your carbon footprint&lt;/a&gt; with optimal architectural design, and if you haven't made the jump to serverless yet, maybe that's the first step!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Serverless Lens&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5t8b3oue9295xu14dki.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5t8b3oue9295xu14dki.jpg" alt="A pair of eyeglasses with lenses. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition to the six pillars, AWS Well Architected has this concept of &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/userguide/lenses.html" rel="noopener noreferrer"&gt;Well Architected Lenses&lt;/a&gt;. Much like a pair of reading glasses, you can apply a specific Lens to your application to 'see' your application in a bit more detail. There are Lenses for &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/machine-learning-lens/machine-learning-lens.html" rel="noopener noreferrer"&gt;Machine Learning&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/analytics-lens/analytics-lens.html?did=wp_card&amp;amp;trk=wp_card" rel="noopener noreferrer"&gt;Data Analytics&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/financial-services-industry-lens/welcome.html?did=wp_card&amp;amp;trk=wp_card" rel="noopener noreferrer"&gt;Financial Services&lt;/a&gt;, and, of course, &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/welcome.html?did=wp_card&amp;amp;trk=wp_card" rel="noopener noreferrer"&gt;Serverless Applications&lt;/a&gt;. These Lenses are simply a set of extra guidelines and questions for each of these six pillars relating specifically to the type of application you are building. They are 'optional', as is the entire Well Architected Review process, but again, if you are building a serverless application, I would highly recommend you complete a Well Architected Review with the Serverless Lens, as it will only strengthen your application posture in the context of these six pillars.&lt;/p&gt;

&lt;p&gt;If you'd like to learn more about Well Architected or hear about it in practice, I have actually given a &lt;a href="https://www.twitch.tv/videos/1674539542?collection=T1passDrLhdY6Q" rel="noopener noreferrer"&gt;recent talk on the subject with Build On at AWS Re:Invent&lt;/a&gt;. This is an area of technology I have been very passionate about, and I truly believe these pillars and Well Architected Reviews are well worth the time and effort. We're coming up to end of our team together this week (I know, already?!) so for our last day tomorrow, I'm excited to summarize what we've learned so far, and present you with some next steps for going beyond the serverless basics.*&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps" rel="noopener noreferrer"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>cleancode</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Serverless Orchestration</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Wed, 15 Mar 2023 19:50:55 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-orchestration-3879</link>
      <guid>https://forem.com/aws-heroes/serverless-orchestration-3879</guid>
      <description>&lt;p&gt;Are you still with me? I hope so, because I'm excited to discuss some of the really cool services in serverless that go beyond the basics of APIs, storage, and compute. This is the space where you can really see the benefits of serverless shine, and, compared to on-premises or other cloud development spaces, where there has been a lot of innovation that may not compare 1:1 to what you're used to in application development. I've included these services under the broad umbrella of 'orchestration', because they really exist in-between the core services and help with your event-driven flow. You may not have a need for all, or even any, of these services in all of your applications, but they can be useful technologies to take advantage of, especially if your application is truly configured for &lt;a href="https://aws.amazon.com/event-driven-architecture/" rel="noopener noreferrer"&gt;event driven architecture&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Step Functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1457jyhd869f1edptzq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1457jyhd869f1edptzq.jpg" alt="A person walking up steps. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is it weird to have a favorite serverless service? Because this one might be mine. &lt;a href="https://aws.amazon.com/step-functions/" rel="noopener noreferrer"&gt;AWS Step Functions&lt;/a&gt; is a workflow orchestration tool that helps you manage your distributed application by breaking it down into multiple steps (the name should make sense now). Step Functions integrated with over 220 AWS services, but personally I have found it most useful with my &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/welcome.html" rel="noopener noreferrer"&gt;lambda functions&lt;/a&gt;, as it helps keep them small, concise, logical units of business code that are called systematically. It's easier to control and monitor your event as it flows through your application, so you can track which step your application is or identify where you may be running into issues. Step Functions also gives you more flexibility, as you can add in different '&lt;a href="https://docs.aws.amazon.com/step-functions/latest/dg/concepts-states.html" rel="noopener noreferrer"&gt;states&lt;/a&gt;' like PASS or WAIT, and you can even run processes in parallel, or give your application Choices to execute on different steps depending on what the input or parameters are.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzagq9mtqkxna7se4w46.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzagq9mtqkxna7se4w46.jpg" alt="Step Functions Workflow in Studio. Example via AWS Documentation."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with most of the AWS resources, you can provision and configure your step function however you choose. For me, this is typically using an &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html" rel="noopener noreferrer"&gt;Infrastructure as Code&lt;/a&gt; tool like &lt;a href="https://aws.amazon.com/cdk/" rel="noopener noreferrer"&gt;CDK&lt;/a&gt; to provision in python or typescript, and then defining the actual steps - otherwise known as the '&lt;a href="https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-state-machine-structure.html" rel="noopener noreferrer"&gt;state machine&lt;/a&gt;' - in a JSON file. Since its release in 2016, Step Functions have had a visual component in the AWS Console that allows you to see the steps of your application and the flow of your event through it, but in 2021 AWS released &lt;a href="https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html" rel="noopener noreferrer"&gt;Workflow Studio&lt;/a&gt;, which actually allows you to drag and drop the components you want to use into a visual editor, and it will auto-generate the code for you. Unfortunately working in a large enterprise this isn't something I can really take advantage of, but as a visual learner I think this is an awesome tool, and can definitely streamline your development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon EventBridge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka6gwfptdxxs4zp98jfx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka6gwfptdxxs4zp98jfx.jpg" alt="Large bridge. Image via Unsplash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/eventbridge/" rel="noopener noreferrer"&gt;EventBridge&lt;/a&gt; has seemed to be a hot topic as of late, and I'm seeing more and more content depicting EventBridge resources. Somewhat similarly to Step Functions, Amazon EventBridge is a serverless orchestration service for your application events. Its three key components are an Event Bus, to handle interactions with your events, like sending/receiving and transforming, a &lt;a href="https://aws.amazon.com/eventbridge/scheduler/" rel="noopener noreferrer"&gt;Scheduler&lt;/a&gt;, to help you schedule tasks associated with your events, and finally &lt;a href="https://aws.amazon.com/eventbridge/pipes/" rel="noopener noreferrer"&gt;Pipes&lt;/a&gt;, which integrate directly with your serverless services "end-to-end" and optionally filter or transform your event as needed. EventBridge Pipes were only recently released at the end of 2022, but the seamless integration with your event producers and consumers have been a huge selling point for developers (which explains the recent uptick in EventBridge usage).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frze7z1cp2tf50sebsc2z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frze7z1cp2tf50sebsc2z.jpg" alt="Illustration of EventBridge Pipes. Example from AWS Documentation."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Similar to other services, you can define and configure your EventBridge instance to your application needs, with the security constraints, service integrations, and appropriate event transforms you need. I won't say never, but it is particularly likely that you will not have EventBridge and Step Functions in the same application, or at least microservices, since their service offerings are quite similar. When might you use one over the other? As always, neither option is 'better' and this comes down to some personal preference and your application needs. If you have processes that need to run in parallel and maybe have more states dependent on each other, where you may want to wait or skips steps or have different workflows, Step Functions is probably a better choice. If you are looking to integrate directly between multiple different AWS services, and need to do quite a bit of transformation or filtering on your event, EventBridge may be a better starting place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon SQS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wuqzaeco5k0y2qbn2kb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wuqzaeco5k0y2qbn2kb.jpg" alt="Queue outside of a store. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/sqs/" rel="noopener noreferrer"&gt;Amazon SQS&lt;/a&gt; is also known as the Simple Queue Service. Much like people waiting in line for a busy ride at a theme park, sometimes you have places in your application where events may get backed up, creating a bit of a bottleneck and harming your application's performance (and potentially your wallet, too). A queue service such as SQS will help you process and maintain your events and messages as they come in. SQS specifically is what is known as a &lt;a href="https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html" rel="noopener noreferrer"&gt;First-In First-Out or FIFO queue&lt;/a&gt;, meaning the first item in is the first item to be processed, just like the first person in line for our ride is the first person to get on. Sometimes with high volumes of messages waiting to be processed, there is risk that they get lost or skipped over in processing (disgruntled individuals leaving the long wait at the theme park ride) - having SQS in place prevents this problem from happening. It also means you do not have to worry about your other services being up and ready to handle incoming events, as SQS manages and stores the messages for you (the fun, roped off queue handles the people waiting and the order in which they arrived at our theme park ride). Just like our other services you can configure SQS, however this is a fairly 'Simple' service, so you'll find creating and maintaining an SQS queue to be uncomplicated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon SNS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falyh0ikwpn11evfjafvw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falyh0ikwpn11evfjafvw.jpg" alt="Email notification. Image via Unsplash."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/sns/" rel="noopener noreferrer"&gt;Amazon SNS&lt;/a&gt; or Simple Notification Service, is less of an orchestration service and more of a communication service. I am going to deem this a utility service, since it is a small service you can utilize for sending and receiving messages. One of the most common use cases for the SNS service is to send email alerts - maybe to developers to monitor application status, or maybe to users, to communicate new features or send email confirmations based on something like a booking reservation. You can also send as SMS text messages or mobile pushes, and you can &lt;a href="https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html" rel="noopener noreferrer"&gt;customize your queue type and add encryption&lt;/a&gt;. Like SQS, this service is definitely 'Simple' and can be configured in just a few short lines of code, or button clicks in the AWS Console.&lt;/p&gt;

&lt;p&gt;Although not what I would consider 'core' cloud services, the orchestration and communication services are key to event driven development and robust application design. If you are structuring your application to take advantage of event flow, these are tools you are going to want to be familiar with, and will be instrumental in your success by saving you time, money, complexity, and management overhead. This about wraps up what I want to cover with &lt;a href="https://aws.amazon.com/serverless/" rel="noopener noreferrer"&gt;serverless cloud services&lt;/a&gt;, though there is so much out there to explore. Tune in tomorrow as we start to put all of this together with best practices.*&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps" rel="noopener noreferrer"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>Serverless APIs</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Tue, 14 Mar 2023 21:04:57 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-apis-5bdp</link>
      <guid>https://forem.com/aws-heroes/serverless-apis-5bdp</guid>
      <description>&lt;p&gt;If you're new to the application development world, &lt;a href="https://aws.amazon.com/what-is/api/"&gt;API stands for Application Programming Interface&lt;/a&gt;, an interface that offers a 'service' of sorts for applications to consume. &lt;a href="https://www.google.com/maps"&gt;Google Maps&lt;/a&gt;, for instance, has a &lt;a href="https://developers.google.com/maps"&gt;public API&lt;/a&gt; that you or I could use if we're building an application to locate all of the restaurants in our town. They surface this, and many, many other data points via documented endpoints, and we can use things like &lt;a href="https://cloud.google.com/endpoints/docs/openapi/when-why-api-key"&gt;API keys&lt;/a&gt; to access this data. If you're a developer, chances are you will build an API at some point in your career, if not several, and you will definitely work with them. As a key building block in application development, &lt;a href="https://aws.amazon.com/serverless/"&gt;AWS provides a few API solutions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon API Gateway&lt;/strong&gt;&lt;br&gt;
Let's say you have a travel website - you have your frontend application, and you have your backend application that has some &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/welcome.html"&gt;lambda functions&lt;/a&gt; to handle users creating, updating, and deleting their vacation reservations, which interacts with a &lt;a href="https://aws.amazon.com/dynamodb/"&gt;DynamoDB table&lt;/a&gt; that is saving all this information for you. Your frontend application, however, needs to be able to communicate and pass information back and forth with these lambda functions. This is where an &lt;a href="https://aws.amazon.com/api-gateway/"&gt;API Gateway&lt;/a&gt; comes in. An API Gateway is typically a &lt;a href="https://aws.amazon.com/what-is/restful-api/"&gt;REST API&lt;/a&gt; (&lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-overview.html"&gt;Websocket&lt;/a&gt; is also an option) that manages different endpoints for your application. For instance, when a user creates a reservation, the frontend application may hit a POST endpoint on your API called 'createReservation', and you can configure your API to directly integrate with your 'createReservation' lambda function, where you might do something like create a new reservation ID and save it to a DynamoDB table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6qbCBjJz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gkzgz6gtw42ys567wsi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6qbCBjJz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gkzgz6gtw42ys567wsi.jpg" alt="Google Maps API. Image via Unsplash." width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is just one fairly straightforward example; you might already be able to see how this can get very complex very quickly. It helps that API Gateway has tons of &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-develop.html"&gt;configuration options&lt;/a&gt;, allowing you to set up your level of application monitoring and logging, set concurrency and throttling on your API calls, directly integrate with multiple services, and, of course, your authorization and access levels. With API Gateway, &lt;a href="https://aws.amazon.com/api-gateway/pricing/"&gt;you pay for the calls you receive and the data you send out&lt;/a&gt;. When you define a REST API, the API Gateway is actually made up of three different resources - the API itself, a &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-stages.html"&gt;Stage resource&lt;/a&gt; for each environment which can aid in version control and other configuration options per environment, and a &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api-with-console.html"&gt;Deployment resource&lt;/a&gt;, which is essentially a 'snapshot' of your API for the Stage to use. In addition to these resources, you also need to define each of your endpoints as a new route on the API Gateway individually. API Gateway is a very powerful and useful tool at your disposal, but it can grow quickly and easily get fairly complex, so make sure you are designing your application to account for your specific needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS AppSync&lt;/strong&gt;&lt;br&gt;
I'm keeping this section a bit shorter for you all, since &lt;a href="https://aws.amazon.com/appsync/"&gt;AppSync&lt;/a&gt; is not something I have actually used personally, but have heard great things about. AppSync is another API option AWS has made available specifically for applications that want to take advantage of &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; or a &lt;a href="https://aws.amazon.com/pub-sub-messaging/"&gt;Publish/Subscribe&lt;/a&gt; model. The GraphQL model may be of interest to front end developers that need to query multiple sources of data from one API endpoint, like databases or &lt;a href="https://aws.amazon.com/microservices/"&gt;microservices&lt;/a&gt;. The Pub/Sub model I am more familiar with in the &lt;a href="https://aws.amazon.com/what-is/iot/"&gt;IoT&lt;/a&gt; hardware-communicates-with-software aspect, however this is also powerful for frontend developers looking to take advantage of real-time updates with serverless WebSocket connections. With AppSync, you also have caching, offline data synchronization, and real-time updates. You can learn more and &lt;a href="https://docs.aws.amazon.com/appsync/latest/APIReference/Welcome.html"&gt;check out the developer docs&lt;/a&gt; on the AWS Website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d96eIrR4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbgvcoas9n1vw5wfwuna.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d96eIrR4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbgvcoas9n1vw5wfwuna.jpg" alt="Graph depiction, like GraphQL. Image via Unsplash." width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with all of these short, daily articles, there is so much more that I could dive into here, but my purpose this week is to provide you with a little taste of what the serverless space has to offer, and get you started as a newbie to serverless. I'd highly encourage you to read up even more on &lt;a href="https://thenewstack.io/werner-vogels-6-rules-for-good-api-design/"&gt;effective API Design&lt;/a&gt;, and even get started with a tutorial, workshop, or even your own project (feel free to try out the travel website and let me know how it goes!) Believe it or not, there is still more to explore in the serverless space, so in my next post we will continue on with some really helpful integration &amp;amp; orchestration services.*&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>api</category>
      <category>aws</category>
    </item>
    <item>
      <title>Serverless Storage</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Mon, 13 Mar 2023 20:33:53 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-storage-50i3</link>
      <guid>https://forem.com/aws-heroes/serverless-storage-50i3</guid>
      <description>&lt;p&gt;&lt;a href="https://aws.amazon.com/lambda/"&gt;Lambda functions&lt;/a&gt; and &lt;a href="https://aws.amazon.com/fargate/"&gt;Fargate&lt;/a&gt; serve a great purpose and might accomplish what you need for a very small, &lt;a href="https://aws.amazon.com/getting-started/hands-on/run-serverless-code/"&gt;hello world-type project&lt;/a&gt;, but chances are you want to do a bit more with your serverless applications. Maybe you have a subscription-based product and you have user profiles with data. Or maybe your application is an e-commerce site and you need to store sensitive information, like credit card details. Or maybe you're just trying to save some images or files. Whatever the reason, you clearly need a storage solution, and this is where our serverless storage options come in.&lt;/p&gt;

&lt;p&gt;Depending on what you're storing, how frequently you access stored items, and how you want to interact with them, you have a number of choices regarding file &amp;amp; image stores and serverless databases. Over the years, AWS has released a number of choices (some, may argue, aren't necessarily within the 'serverless' category even when named as such) but the number one choice in its humble beginnings was Amazon S3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon S3&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt; is a popular abbreviation for 'Simple Storage Solution' and is known as &lt;a href="https://aws.amazon.com/what-is/object-storage/"&gt;object storage&lt;/a&gt;. You can store any number of items in S3, from various documents, to images, videos, entire file systems, and so on. In order to store these resources, you provision your own storage space, known as an S3 'Bucket'. The easiest way to describe a bucket is to compare it to a folder on your computer. Your 'Documents' folder, for instance, may contain all of your Word documents, and you may have sub folders within it, say for 'recipes' or 'projects' or 'schoolwork'. S3 buckets operate similarly, and just like your Documents folder, you can include sub folders and all different resource types. S3 is also a very popular choice for hosting static websites, and just like any other cloud offering, there are also plenty of security constraints in place for you to take advantage of, like bucket encryption, read-only access, and &lt;a href="https://aws.amazon.com/s3/security/"&gt;more&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W0vQU1RR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pe9cgznfn20czs2ino45.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W0vQU1RR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pe9cgznfn20czs2ino45.jpg" alt="S3 Buckets are an example of an object storage solution. Image via Unsplash." width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, there are tons of other great advantages to using S3 buckets. Many of AWS's other great resources, like Lambda, have &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html"&gt;direct integration with S3&lt;/a&gt;, making it easy to access and read/write directly to your bucket. S3 also has &lt;a href="https://aws.amazon.com/s3/storage-classes/"&gt;different types of storage classes&lt;/a&gt;, like Intelligent Tiering and Glacier, that are more cost-effective for items that are accessed infrequently or for very large storage amounts. S3 is a global storage solution though, meaning that the name of your bucket must be unique across all AWS accounts within your regional partition (so yes, it is likely 'test-bucket' is taken). Whatever your storage need may be, S3 can be an effective solution, and one that is significantly cheaper and more secure than your on-premises solution or office filing cabinet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon DynamoDB&lt;/strong&gt;&lt;br&gt;
As developers, sometimes we are working with larger, very structured datasets that involve &lt;a href="https://www.ibm.com/topics/database-schema"&gt;schemas&lt;/a&gt; and specific &lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/dynamodb-data-modeling/step3.html"&gt;access patterns&lt;/a&gt;. For these, a database solution makes much more sense, and luckily we have a serverless option for that too! &lt;a href="https://aws.amazon.com/dynamodb/"&gt;DynamoDB&lt;/a&gt; is a NoSQL database solution that offers lightning fast performance, 'near unlimited' throughput and storage, and backup, restore, and multi-region replication to ensure your data is always available and secure. You can interact with your database using queries, scans, read/writes, and more, all from the AWS console or the comfort of your favorite programming language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rJV7M-ca--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dt44uqk8c2t0dysz7ew.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rJV7M-ca--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dt44uqk8c2t0dysz7ew.jpg" alt="Sort of like the Dewey Decimal System, Single Table Design with DynamoDB allows you to store and 'catalog' all different types of data you may need to collect. Image via Unsplash." width="880" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DynamoDB is a powerful service, but you really will not be able to capitalize on all it has to offer unless you structure your data for Single Table Design. I will admit, mastering the art of &lt;a href="https://aws.amazon.com/blogs/compute/creating-a-single-table-design-with-amazon-dynamodb/"&gt;Single Table Design&lt;/a&gt; (I just tried to abbreviate that, and I will never do that again..) is not easy; I would go so far to say that it is probably one of the most difficult parts of serverless development (if you're having trouble, the resources &lt;a href="https://aws.amazon.com/blogs/compute/creating-a-single-table-design-with-amazon-dynamodb/"&gt;Alex DeBrie&lt;/a&gt; puts out for this are unparalleled). You really need to have a good grasp on your dataset, understand ALL of your access patterns up front to plan your &lt;a href="https://aws.amazon.com/premiumsupport/knowledge-center/primary-key-dynamodb-table/"&gt;Primary Keys (PKs)&lt;/a&gt; and &lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html"&gt;Global Secondary Indices (GSIs)&lt;/a&gt; accordingly. I don't want to go too in-depth into this topic, since there are literally &lt;a href="https://www.dynamodbbook.com/"&gt;full books on the subject&lt;/a&gt;, but just know that although I think the advantages you have when using DynamoDB to its full potential are well worth it, this can be a steep learning curve and isn't going to be the database storage solution for everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon EFS, Amazon RDS Proxy, Amazon Aurora Serverless, Amazon Redshift Serverless, Amazon Neptune Serverless&lt;/strong&gt;&lt;br&gt;
This is my serverless database catch-all section. In my opinion, S3 and DynamoDB are really the storage solutions you need for serverless development, however, you may find some use cases for these remaining serverless storage options. &lt;a href="https://aws.amazon.com/efs/"&gt;EFS is the Elastic File System&lt;/a&gt;, which automagically sizes for the number of files you have (S3 covers many file storage situations, but if you have something specific in mind, you may want to use EFS). &lt;a href="https://aws.amazon.com/rds/proxy/"&gt;RDS Proxy&lt;/a&gt; makes relational database connections more secure. &lt;a href="https://aws.amazon.com/rds/aurora/serverless/"&gt;Aurora&lt;/a&gt;, &lt;a href="https://aws.amazon.com/redshift/redshift-serverless/"&gt;Redshift&lt;/a&gt;, and &lt;a href="https://aws.amazon.com/neptune/serverless/"&gt;Neptune Serverless&lt;/a&gt; are basically the serverless versions of these three AWS service offerings. Some of these are up for debate in the serverless community as to whether  or not they really constitute as serverless offerings, but since they are not databases I have had a use for in my short career, I will abstain from weighing in here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iYLEz-0Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ogufx83tkyr6zxl8erv2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iYLEz-0Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ogufx83tkyr6zxl8erv2.jpg" alt="Keep your files safe and secure with any number of serverless file storage options, like EFS. Image via Unsplash." width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, this about sums up the serverless storage solutions available. As always, there are definitely equivalents of these resources in your cloud provider of choice, and you can't go wrong with any service you choose, as long as you're evaluating based on your specific application needs. Join me tomorrow, as we take another step further into serverless with API design.*&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>s3</category>
      <category>fargate</category>
    </item>
    <item>
      <title>Serverless Compute</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Mon, 13 Mar 2023 00:32:38 +0000</pubDate>
      <link>https://forem.com/aws-heroes/serverless-compute-3bgo</link>
      <guid>https://forem.com/aws-heroes/serverless-compute-3bgo</guid>
      <description>&lt;p&gt;Compute is one of the basic building blocks of building any application. What is your application aiming to accomplish? Where are you keeping your business logic? What are you &lt;em&gt;running&lt;/em&gt; and &lt;strong&gt;how&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;The key compute resource everyone immediately associates serverless with is &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt;. I want to be clear here - AWS Lambda is a large part of the serverless ecosystem, BUT Lambda ≠ serverless. Just because you include a lambda function in your application does not automatically make you serverless. Likewise, just because you build a service completely out of lambda functions also does not mean you have a serverless application. Serverless is a mindset, a new way of thinking; there are tons of tools and services out there that will help you build serverless applications, but implementing them does not mean you have a serverless application. We need to be intentional with our design, and where &amp;amp; how we use these resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda&lt;/strong&gt;&lt;br&gt;
If you're in Azure, your equivalent service is &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/"&gt;Azure Functions&lt;/a&gt;. For Google, this is &lt;a href="https://cloud.google.com/functions"&gt;Google Functions&lt;/a&gt; (yes, AWS just HAD to be different). Regardless of its name, all of these services fulfill the same purpose - a small compute building block to house your business logic code. An AWS Lambda function is simply the code you want to run, written in your language of choice (I preference Python, but Typescript and Java are popular options). In your &lt;a href="https://learn.microsoft.com/en-us/devops/deliver/what-is-infrastructure-as-code#:~:text=Infrastructure%20as%20code%20(IaC)%20uses,load%20balancers%2C%20and%20connection%20topologies."&gt;infrastructure code&lt;/a&gt;, you specify some &lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html?highlight=create%20lambda%20function"&gt;lambda function basics&lt;/a&gt;, like name, path to the business logic code, security role, and what runtime you're using, and optionally have the ability to control more parameters like timeout, concurrency, aliases, and more. Lambda even has built in integrations to other AWS services, such as &lt;a href="https://aws.amazon.com/s3/"&gt;S3&lt;/a&gt; and &lt;a href="https://aws.amazon.com/sqs/"&gt;SQS&lt;/a&gt; (we'll get to these) to make application development even easier. Additionally, &lt;a href="https://aws.amazon.com/lambda/pricing/"&gt;lambda functions are priced&lt;/a&gt; based on the number of times they're invoked and the duration of time they run, making them exceptionally affordable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LOZ-QH1h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1e5pltf7a7h7iamteojr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LOZ-QH1h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1e5pltf7a7h7iamteojr.jpg" alt="Lambda is one single building block of a larger application. Image via Unsplash." width="880" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, there are cases where lambda functions may not be the best option for compute, if you have long-running, highly complex computational processes, lambda functions may not be the best fit for your application. If you're migrating an application to serverless, it's also very likely that this is not a 1:1 changeover. Throwing all of your code into one lambda function is not optimizing for serverless, meaning that your monolith architecture may need to be written into &lt;a href="https://aws.amazon.com/microservices/"&gt;microservices&lt;/a&gt; to take full advantage of everything lambda and serverless has to offer. Whether you're migrating or building something brand new however, lambda functions are (dare I say) the choice for serverless compute as they're lightweight, easy to provision, and cost effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Fargate&lt;/strong&gt;&lt;br&gt;
AWS defines &lt;a href="https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html"&gt;Fargate&lt;/a&gt; as a 'serverless compute engine', but I prefer to define it as a serverless container. &lt;a href="https://aws.amazon.com/containers/services/"&gt;Containers&lt;/a&gt; are an entirely different topic of discussion so I won't dive into them too much, but they do fall under the same "&lt;a href="https://aws.amazon.com/modern-apps/"&gt;modern applications&lt;/a&gt;" umbrella that serverless does, making them a sort of sibling option. Containerizing an application is a fancy way of saying you are bundling all aspects of your application into a more portable service (ie, basically sticking your app into a box for ease of movement and use). This makes containers very popular for migrating applications, batch processing, AI/ML, and more.&lt;/p&gt;

&lt;p&gt;Fargate stands sort of in the middle as a container service that offers many of the same serverless benefits that lambda has - no need to manage your infrastructure, built-in integrations to other AWS services, and pay-as-you-go pricing. What makes you choose one compute option over the other then? In my experience, this really comes down to what you want your end product to be, what time you have, and what experience you have. Personally, Fargate is more of a 'lift-and-shift' solution for applications that you don't want to change much of, but need to move quickly and easily while wanting to take advantage of serverless benefits. It definitely has its place as part of other applications as well, but it also comes down to the level of comfort you or your teams have with serverless or containerization. Containers may be quicker to adopt, whereas serverless requires more of a mindset shift, and typically comes with some rearchitecting. I believe this does pay off tenfold in the long run, but given your particular use cases and time constraints, Fargate may be a better option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tTdLQzow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jbal4n9cezw9kouvmcjb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTdLQzow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jbal4n9cezw9kouvmcjb.jpg" alt="Fargate is a serverless container service. Image via Unsplash." width="880" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These two options pretty much sum up serverless compute, believe it or not. When it comes to your business logic code in AWS or other cloud provider, these two services cover most, if not all, serverless application needs. As we continue on in this series, you'll realize there are a ton of other 'supporting' serverless services for storage, APIs, orchestration, and more to dive into. I hope this has given you a good preview on serverless compute and what's to come, tune in tomorrow where we'll discuss the various serverless storage solutions available to us. See you then!&lt;/p&gt;

&lt;p&gt;*This is part of a series that will be covered here, but I also encourage you to follow along with the rest of the series on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps"&gt;90DaysOfDevOps&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
      <category>lambda</category>
      <category>fargate</category>
    </item>
    <item>
      <title>What is Serverless?</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Sat, 11 Mar 2023 13:57:57 +0000</pubDate>
      <link>https://forem.com/aws-heroes/what-is-serverless-4d4p</link>
      <guid>https://forem.com/aws-heroes/what-is-serverless-4d4p</guid>
      <description>&lt;p&gt;The term "Serverless" has become quite the buzzword over these past few years, some folks today even arguing whether or not the term still holds weight. You may or may not have heard about serverless technology up to this point in your journey through development. But what exactly is serverless? What does it mean to design applications in a serverless manner? What constitutes a serverless service or offering? I hope to answer all these questions and more over this series of blog posts.&lt;/p&gt;

&lt;p&gt;As an &lt;a href="https://aws.amazon.com/developer/community/heroes/kristi-perreault/?did=dh_card&amp;amp;trk=dh_card"&gt;AWS Hero&lt;/a&gt; and a Principal Software engineer at a large Fortune 100 enterprise, I have been focused solely on serverless technologies and enablement over the last 3 years. I have spoken quite extensively about our &lt;a href="https://youtu.be/ciCz8dnDuEs"&gt;serverless journey&lt;/a&gt;, &lt;a href="https://syntax.fm/show/484/supper-club-70-000-serverless-functions-with-kristi-perreault-of-liberty-mutual"&gt;what serverless means in a large enterprise&lt;/a&gt;, and &lt;a href="https://www.youtube.com/watch?v=ctdviJ2Ewio"&gt;how to be successful in a corporate setting&lt;/a&gt;. Everything I have learned has been through experience, on-the-job. The &lt;a href="https://aws.amazon.com/serverless/"&gt;serverless definition&lt;/a&gt; I resonate with most states that serverless is event-driven, your resources scale up and down without you needing to manage them, and follows an "only pay for what you use" model. Let's break this down a bit further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/event-driven-architecture/#:~:text=An%20event%2Ddriven%20architecture%20uses,on%20an%20e%2Dcommerce%20website."&gt;Event-driven architecture&lt;/a&gt; is exactly how it sounds. You build your applications following the flow of your events. When x happens, I want to trigger y, to run service z. We write our serverless applications with this flow in mind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automatically scaling up and down as your service demands is a key component of serverless functionality. I fault the name "serverless" here a quite a bit, because contrary to popular belief, serverless does in fact include servers - you just don't need to manage them in the same way you would with your on-premises ecosystem or other cloud resources. You still need to provision the resources you need, and some configuration is required, but gone are the days of estimating exactly how much storage and processing power you need - your cloud provider handles this for you. This frees the developer up for focusing more on business code, and less on physical infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With automatic scaling, this also lends you to only pay for exactly what you are using. You no longer need to buy and maintain a physical server you may only use to half its capacity, save for the one time of year your traffic hits its peak, for instance. You don't need to pay for all the storage and processing power you have to have "just in case" - you pay exactly for what you use, exactly when you need it. No more, no less.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am a large proponent of serverless, and I believe these are huge benefits to adopting serverless, but that does not mean it is for everyone or every architecture. I talk quite a bit about the concept of "&lt;a href="https://www.liberty-it.co.uk/stories/articles/tomorrow-talks-how-build-serverless-first-developer-experience"&gt;serverless-first&lt;/a&gt;" design, meaning that you approach every architecture in a serverless manner first, and if that is not the most optimal design, you move on to other solutions like containers, relational databases, reserved compute instances, and so on. Equally as important, especially in a large enterprise, is to evaluate your time constraints and areas of expertise. Serverless is not going to be for everyone, and depending on your background, there can be a large learning curve associated with adopting it. The trade off is worth it, but if you do not have the adequate time or drive to dedicate to this transformation, you will not be successful.&lt;/p&gt;

&lt;p&gt;That being said, I hope to provide you with a strong starting point for the land of serverless. Over the next few days, we will be exploring serverless resources and services, from compute, to storage, to API design, and more. We will keep our discussions high-level, but I'll be sure to include relevant examples, resources, and further reading from other leading industry experts. No prerequisites are necessary, I just ask you approach each and every article with an open mind, continue to ask questions &amp;amp; provide feedback, and let's dive in!*&lt;/p&gt;

&lt;p&gt;*As a quick disclaimer - as I am an AWS Serverless Hero, most of the examples and explanations I give will reference the AWS ecosystem since that is where my expertise is. Many of the AWS services and tools we will discuss have equivalents across Azure, GCP, or other tooling. I will do my best to call these out going forward. This is part of a series that will be covered here, as well as part of a larger effort on &lt;a href="https://github.com/MichaelCade/90DaysOfDevOps"&gt;90DaysOfDevOps&lt;/a&gt;, which I highly encourage you to follow along with.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Is This Thing On? Giving an Effective Talk In Person</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Fri, 20 May 2022 05:03:34 +0000</pubDate>
      <link>https://forem.com/aws-builders/is-this-thing-on-giving-an-effective-talk-in-person-887</link>
      <guid>https://forem.com/aws-builders/is-this-thing-on-giving-an-effective-talk-in-person-887</guid>
      <description>&lt;p&gt;It seems funny to be writing this, considering how many articles are out there discussing how to better engage with virtual audiences, but if you're like me, you may find yourself in this unique position where your speaking career STARTED over the pandemic, and you've never actually had to speak to large audience in person. Or maybe you have, but the 2+ year hiatus has left you lacking confidence, motivation, or just feel like you may've been out of the game too long. Or maybe you have yet to start at all, in which case, you can take this as a sign…&lt;/p&gt;

&lt;p&gt;These last few weeks I have been fortunate enough to travel to multiple conferences in the United States speaking about Liberty Mutual's current state of serverless in person. I know not everyone is keen on public speaking, but I wanted to take a moment to share some of my experiences as someone who has had to transition from virtual webinars and conferences to giving a talk live and in person. First, however, a quick summary of my latest travels.&lt;br&gt;
 &lt;br&gt;
We kicked off the speaker tour at the &lt;a href="https://aws.amazon.com/events/summits/san-francisco/"&gt;AWS Summit in San Francisco&lt;/a&gt;, where I gave the very first dev chat at the community lounge in the expo hall on Day One. Since this is a developer community talk, it is unfortunately not recorded, but please enjoy this photo of me accidentally matching the backdrop perfectly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q28-SSCu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sopz7jicbiujs6n1aple.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q28-SSCu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sopz7jicbiujs6n1aple.JPG" alt="AWS Summit San Francisco" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
Next stop on the speaker tour was back at my home base in Denver for &lt;a href="https://devopsdays.org/events/2022-denver/welcome/"&gt;DevOpsDays Rockies&lt;/a&gt;. A fantastic venue, great food, and even better people, I would happily speak or attend a DevOpsDays again. If you missed it, you can catch the &lt;a href="https://www.youtube.com/watch?v=n3DvKmqhzUo"&gt;recording of my specific talk on YouTube&lt;/a&gt;, right at the 2:21:00 mark. Thanks to some really awesome audience members and the power of Twitter, we've also got another great speaking shot!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W4q6gxA4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zdw18nwsx84cr19i0nw.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W4q6gxA4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zdw18nwsx84cr19i0nw.JPG" alt="DevOpsDays Rockies" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
Last but not least, I headed back to San Francisco to speak at &lt;a href="https://www.serverlessinthepark.com/"&gt;Serverless in the Park&lt;/a&gt;, part of this year's Reactathon conference. I am thrilled to have had the opportunity to speak at the Serverless in the Park debut, and honestly, if you get the opportunity, speaking on stage outside was an absolute dream. This was my favorite venue to speak at by far; if you missed it, see for yourself in the photo below, or &lt;a href="https://www.youtube.com/watch?v=0qK2_wi4t3k"&gt;check me out at the 5:00:00 mark in the recording&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kEctVW3f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nzwagf7w7x21ufntaton.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kEctVW3f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nzwagf7w7x21ufntaton.JPG" alt="Serverless in the Park" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
Now that we've established that I clearly love to speak on a stage, I want to pass on a few tips &amp;amp; tricks I've learned over the past few weeks to help improve your in person speaking engagements, or at least give you a glimpse into the mind of a conference speaker.&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;Engaging with the Audience&lt;/strong&gt;&lt;br&gt;
If you've presented in a video call, you'll know that it can be one of the least engaging mediums to give a talk in. Everyone is muted, no one has their camera on and even if they do, you can't see everyone to gauge interest or engagement. It's like speaking to an empty room, and aside from the occasional comment in the chat or virtual hand raise, you have almost NO feedback from your audience. In person, however, your audience is right in front of you, clearly present, and - perhaps the most important thing - reactive! If you crack a joke, you get laughter and see smiles, instead of absolute silence and a blank screen. As you're speaking, you can clearly tell who is engaged and what is resonating with folks through body language you miss out on in video format - eye contact, head nods, note-taking, etc.&lt;br&gt;
 &lt;br&gt;
Which leads me to my actual point of discussion here…stage presence. In person, on a stage, it matters. Make eye contact. Utilize the space you have on the stage - you want to be comfortably in between standing completely still behind the podium and pacing rapidly back and forth. You can gesture, point, and narrate with your hands, though if you're Italian like me you may need to reel it in a tad. If you're an anxious speaker, maybe find something to fidget with to keep your hands occupied or to keep in your pocket. Oh, and don't forget, we're back in public now, so you may want to leave the sweatpants at home…no need to break out a 3 piece suit or your nicest heels, but dress to impress! Be expressive, professional, or theme your outfit to your talk for a fun twist! When all else fails, you can never go wrong with the classic tech t-shirt and jeans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wz02-FfW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xt97bhih1qqw76qm1cwu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wz02-FfW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xt97bhih1qqw76qm1cwu.PNG" alt="Close Up" width="283" height="276"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Speaking without a Script&lt;/strong&gt;&lt;br&gt;
One might call this a downside of speaking in person, but I actually quite enjoy the off-the-cuff speaking style. When you're presenting from home, it's so easy to have a script or very thorough notes right there in front of you to read from or reference while you're talking. On stage, unless you're somewhere fancy enough to be using a teleprompter, your slides are typically your only reference point - and you don't want to write everything word for word on them. You want the audience listening to you, not reading the words on the projector behind you.&lt;br&gt;
 &lt;br&gt;
This is why I think it is very important to speak on a subject that you are passionate and knowledgeable about, because you'll know it like the back of your hand; and preferably, it tells a nice story. Crafting a narrative is, in my opinion, easier to remember, provides for a natural flow, and hooks your audience. If you leave your slides generic enough, you can also make changes on the fly, and easily adapt to the audience. Practice this a few times out loud to yourself, or maybe your dog if that helps, but make sure to not overdue it. I have definitely run through my slide decks one too many times, and end up completely boring myself since I know it all too well. It's a balance.&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;An Ongoing Q&amp;amp;A&lt;/strong&gt;&lt;br&gt;
This one might be my absolute favorite thing about speaking in person - the conversation is ongoing! If you give a virtual presentation, sometimes you get a few folks that will come off mute and ask a question or send it in the chat, and maybe if you're really lucky, you get an email or DM follow up. The thing that I find really cool about speaking in person is that your talk really doesn't end after that 30min time slot.&lt;br&gt;
 &lt;br&gt;
With meals, breaks, and open spaces, you're provided with opportunity after opportunity to organically engage in even more conversation. I can't tell you how many times I've stepped off the stage and two hours later someone in line for coffee with me or sitting down at the lunch table asks me a follow up question or comments on one of the points I made on stage. It really allows for open two way conversation, much more than a virtual environment does. If you think of a question later, you have to go out of your way to find &amp;amp; follow me on social media and reach out, but in person, you could easily just find yourself sitting right next to me, a great opportunity to spark up a conversation (and you can - I swear I don't bite).&lt;br&gt;
 &lt;br&gt;
I'm sure I can think of plenty more tips that have helped me out these last few weeks speaking in person, but these are the top three that come to mind. If you enjoyed these ones and want to hear more, or if you have other tips &amp;amp; tricks I neglected to mention, comment below or reach out to me. If you're interested in my upcoming speaking engagements or recordings to some of my other events, make sure to give me a follow on &lt;a href="https://twitter.com/kperreault95"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.linkedin.com/in/kristi-perreault/"&gt;LinkedIn&lt;/a&gt;; clearly I love to talk ;) Happy speaking!&lt;/p&gt;

</description>
      <category>speaking</category>
      <category>techtalks</category>
      <category>serverless</category>
      <category>career</category>
    </item>
    <item>
      <title>The Great Migration: Upgrading CDK v1 to v2</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Wed, 30 Mar 2022 23:56:07 +0000</pubDate>
      <link>https://forem.com/aws-builders/the-great-migration-upgrading-cdk-v1-to-v2-4efe</link>
      <guid>https://forem.com/aws-builders/the-great-migration-upgrading-cdk-v1-to-v2-4efe</guid>
      <description>&lt;p&gt;At long last, &lt;a href="https://aws.amazon.com/about-aws/whats-new/2021/12/aws-cloud-development-kit-cdk-generally-available/" rel="noopener noreferrer"&gt;CDK v2 is here&lt;/a&gt; and ready for import! &lt;a href="https://aws.amazon.com/blogs/aws/announcing-general-availability-of-construct-hub-and-aws-cloud-development-kit-version-2/" rel="noopener noreferrer"&gt;Announced at Re:Invent 2021&lt;/a&gt;, CDK v2 boasts a single package import, stable APIs, and up-to-date API reference documentation.&lt;/p&gt;

&lt;p&gt;If you have no idea what the heck CDK is or what I'm referring to, take a step back and &lt;a href="https://aws.amazon.com/cdk/" rel="noopener noreferrer"&gt;read up on it&lt;/a&gt;. If you are just getting started with CDK, you can stop reading here; I'd highly recommend you &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html" rel="noopener noreferrer"&gt;jump right into v2&lt;/a&gt;, no need to bother with any of this v1 nonsense.&lt;/p&gt;

&lt;p&gt;If you're like me and you've been living, breathing, and loving the CDK since its v1 days (or maybe you just have a few CDK v1 projects you casually maintain, no need to be a guru) then this post is for you! I've spent the last few weeks migrating my enterprise projects from v1 to v2, and today I want to share the process for updating - both python and typescript, we keep things inclusive here on my blog - the "gotcha's" I ran into, and highlight some of the new key features of v2 along the way.&lt;/p&gt;

&lt;p&gt;A quick note here - in my expert opinion, the v1 to v2 migration is not highly complex. I do think the &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html" rel="noopener noreferrer"&gt;migration guide provided by AWS&lt;/a&gt; provides you with a great starting point, therefore I will not go into all the intricate details since it is included there for you. Instead, I am hoping to leave you with some anecdotal evidence in what I hope to be simple and straightforward language. Let's dive in!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Initial Setup&lt;/strong&gt;&lt;br&gt;
I'll preface this by saying python is my bread &amp;amp; butter, so it stands to reason that most of the projects I have been updating are in python. Sincerest apologies to my node friends.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jnzobn9vvz46ujonyc3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jnzobn9vvz46ujonyc3.jpg" alt="planning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're a Typescript developer, you need to make sure you are on &lt;a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html" rel="noopener noreferrer"&gt;3.8 or later&lt;/a&gt;. For all languages, you will need to bootstrap your account with the new &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html" rel="noopener noreferrer"&gt;modern toolkit stack&lt;/a&gt;, which is backwards compatible, in order to take advantage of v2. This should be pretty easy to do, however do make sure to &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-howto-cfn" rel="noopener noreferrer"&gt;review the permissions and bucket encryption for the modern toolkit&lt;/a&gt; as they have changed to specified permissions and a customer-managed key.&lt;/p&gt;

&lt;p&gt;Additionally, just make sure to run your &lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;npm&lt;/a&gt; or &lt;a href="https://classic.yarnpkg.com/lang/en/docs/cli/install/" rel="noopener noreferrer"&gt;yarn install&lt;/a&gt; commands to install the new v2 dependencies. Reminder you can specify versions by explicitly stating @2.x.x.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Upgrading your Python &amp;amp; Typescript Projects&lt;/strong&gt;&lt;br&gt;
The biggest change you will notice from v1 to v2 is the package import. Instead of having to individually bring in each construct you want to use into your &lt;code&gt;requirements.txt&lt;/code&gt; or &lt;code&gt;package.json&lt;/code&gt; file, all STABLE constructs are now included in the &lt;code&gt;aws-cdk-lib&lt;/code&gt; package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# CDK v1 requirements.txt
aws-cdk.core
aws-cdk.aws_iam
aws-cdk.aws_s3

# CDK v2 requirements.txt
aws-cdk-lib==2.18.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//CDK v1 package.json
"devDependencies": {
    "@aws-cdk/core": "^1.150.0",
    "@aws-cdk/aws-iam": "^1.150.0",
    "@aws-cdk/aws-s3": "^1.150.0"
 }

//CDK v2 package.json
"devDependencies": {
    "aws-cdk-lib": "^2.18.0"
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Along with this, your import statements will also change. You can see examples of what this looks like for python and typescript in the &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html" rel="noopener noreferrer"&gt;migration guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next biggest change you may see is in your &lt;code&gt;cdk.json&lt;/code&gt;, which is luckily the same in both languages. Most of the feature flags you may have been using in v1 have been removed, so for most folks the context in your &lt;code&gt;cdk.json&lt;/code&gt; file can be removed. Your json file in v1 may have looked something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "app": "python3 app.py",
  "context": {
    "@aws-cdk/core:enableStackNameDuplicates": "true",
    "aws-cdk:enableDiffNoFail": "true"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removing the feature flags for v2 we are left with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "app": "python3 app.py"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you need backwards compatibility, you can still take advantage of one of the &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html" rel="noopener noreferrer"&gt;four remaining feature flags&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Gotcha's&lt;/strong&gt;&lt;br&gt;
Do not forget to check and update your tests! I fall victim to this every time; I update the code and the package files for v2, make sure the documentation is updated and then…forget to double check and run the tests. You will need to update the imports in the tests just as you did in the code. If you are taking advantage of the assertions library, &lt;a href="https://www.npmjs.com/package/@aws-cdk/assert" rel="noopener noreferrer"&gt;@aws-cdk/assert&lt;/a&gt;, this is still required as a separate package, it is NOT part of the &lt;code&gt;aws-cdk-lib&lt;/code&gt; package.&lt;/p&gt;

&lt;p&gt;You are also welcome to continue using experimental constructs just as you might have in v1. As of this blog post release date, you will notice quite a few of these constructs in alpha, most notably for myself was the language-specific constructs like the python and go lambda function constructs. These can easily be identified in the &lt;a href="https://docs.aws.amazon.com/cdk/api/v2/" rel="noopener noreferrer"&gt;AWS CDK v2 documentation&lt;/a&gt; with the legacy @aws-cdk package prefix followed by an &lt;code&gt;-alpha&lt;/code&gt; tag at the end, and will need to be brought in as single packages as in v1; they are NOT included in the &lt;code&gt;aws-cdk-lib&lt;/code&gt; package. Also note that there is a separate &lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/constructs-readme.html" rel="noopener noreferrer"&gt;construct package&lt;/a&gt; for your Construct, Dependable, and Node classes, so if you need these makes sure you include the construct package.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fhoyapxecsz2buii712.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fhoyapxecsz2buii712.jpg" alt="computer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What has tripped me (and several others, as I have come to learn) up is it is not always clear which v1 constructs are experimental, and which ones are stable. For instance, I was using the &lt;a href="https://docs.aws.amazon.com/cdk/api/v1/docs/aws-glue-readme.html" rel="noopener noreferrer"&gt;GlueDB resource in v1&lt;/a&gt; and when I moved to v2, I realized the construct was experimental. There are some Glue resources that are stable and some that are experimental in v2, so I had to find and bring in the &lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/aws-glue-alpha-readme.html" rel="noopener noreferrer"&gt;appropriate glue alpha package&lt;/a&gt; separately to utilize GlueDB. Unfortunately, I do not have the time to compare side-by-side every single CDK construct that has or has not changed, so I would recommend that you reference the &lt;a href="https://docs.aws.amazon.com/cdk/api/versions.html" rel="noopener noreferrer"&gt;AWS CDK documentation&lt;/a&gt; and the &lt;a href="https://constructs.dev/" rel="noopener noreferrer"&gt;CDK Construct Hub&lt;/a&gt; for your specific use cases if you have any concerns.&lt;/p&gt;




&lt;p&gt;All in all, my experience upgrading from CDK v1 to v2 was a fairly smooth one, and I'm hoping it was the same for you! If you've been migrating your projects, let me know if this helped, or if you ran into anything else I didn’t cover. If you jumped on this shortly after I posted it, I'd also love to hear your story at &lt;a href="https://www.cdkday.com/" rel="noopener noreferrer"&gt;CDK Day 2022&lt;/a&gt; on May 26th. &lt;a href="https://sessionize.com/cdk-day-2022" rel="noopener noreferrer"&gt;CFPs are open&lt;/a&gt; until April 20th, please reach out to me if you're interested in presenting or need help with a topic idea. Happy migrating!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cdk</category>
      <category>python</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Overcoming our Biases &amp; Supporting Women in Tech</title>
      <dc:creator>Kristi Perreault</dc:creator>
      <pubDate>Fri, 04 Mar 2022 15:25:24 +0000</pubDate>
      <link>https://forem.com/kristiperreault/overcoming-our-biases-supporting-women-in-tech-cik</link>
      <guid>https://forem.com/kristiperreault/overcoming-our-biases-supporting-women-in-tech-cik</guid>
      <description>&lt;p&gt;In honor of International Women's Day and Women's History Month, I wanted to cross-post this women in technology article I wrote a few months ago, sharing my software engineering story for the Dev.to audience and #shecoded community. Please enjoy, and remember we're in this together, let's keep moving forward!&lt;/p&gt;




&lt;p&gt;At age 16, I took my first engineering class in high school. As one of only two girls, I was met with whispers of “she only took this class to meet boys, and have the attention all to herself.”&lt;/p&gt;

&lt;p&gt;At age 17, I sought out an AP Computer Science class online and only made it halfway through. I was told that maybe programming wasn’t for me, and I should explore other options.&lt;/p&gt;

&lt;p&gt;At age 18, I applied to college for computer engineering, and I was met with questions like “are you sure you want to do this? It’s going to be really hard, are you up for it?” and “You know you’ll probably be the only woman in most of your classes, right?”&lt;/p&gt;

&lt;p&gt;At age 20, I was told I could have any internship I wanted because “all tech companies are looking to hire women.”&lt;/p&gt;

&lt;p&gt;At age 22, I drove 12 hours to Michigan to compete in an autonomous vehicle competition with a vehicle I had led the autonomous algorithm development of. Again, I was greeted with a myriad of “wows” because no way was &lt;em&gt;I&lt;/em&gt; in software.&lt;/p&gt;

&lt;p&gt;At age 23, I was asked to work front-end development on a project because “I’d have a much better eye for it” than any of the men on the team, and the back-end development was “pretty complex”.&lt;/p&gt;

&lt;p&gt;At age 24, I was told our “this could have been an email” meeting had value because the only two other women on the call had “made a connection” and were now friends because they were the only two that spoke up.&lt;/p&gt;

&lt;p&gt;At age 25, I removed my job title from my dating profile because I was sick of being told that I was too pretty to be an engineer or too smart and intimidating to be with.&lt;/p&gt;

&lt;p&gt;At age 26, I have mentored dozens of female college students, interns, and new hires, and every single one of them has told me they have wanted to give up and have asked me how I handle it.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I was on a flight to a large tech conference, and the men next to me were not only surprised that I was attending but also that I was attending as a senior software engineer in serverless and could hold my own in a technical conversation.&lt;/p&gt;

&lt;p&gt;I share these stories not to shame and look for pity but to raise awareness and understanding. The funny thing is, I look back on all of these moments (and many others that I did not share here) and think about how lucky I am. How lucky I am that it wasn’t worse, like the stories I’ve heard from dozens of other women. How lucky I am that, for every bad comment, there were a dozen good ones telling me to keep going.&lt;/p&gt;

&lt;p&gt;A few days ago, I was asked to join &lt;a href="https://serverlessland.com/office-hours"&gt;Serverless Office Hours&lt;/a&gt;. At minute 7:50 in the &lt;a href="https://www.youtube.com/watch?v=mvgK6ZImDc8"&gt;video recording&lt;/a&gt;, Julian Wood asked me about my experience as a woman in technology, and he asked what others can do to help support women. Honestly, I wasn’t satisfied with my answer, and after taking some time to think about it more, I’ve decided I can do better. So, if my journey in tech thus far has left you frustrated, confused, or just plain curious, and you’re wondering what you can do to help, I encourage you to read on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build women up&lt;/strong&gt;&lt;br&gt;
It could look like a number of different things, depending on the person (or people) you’re helping and the role you hold. If you know of a job opportunity that’d be perfect for them, share it. If you know of a podcast looking for a guest, pass their name along. If they wrote a book or a blog post or contributed a feature you like, share it with your network. The possibilities here are endless, and it’s so easy to stand up and spread the word. Don’t underestimate the power of your voice and the weight of your word.&lt;/p&gt;

&lt;p&gt;The flip side of this — and it’s something I am guilty of — is many of us tend to compare ourselves to others and downplay our achievements. If you want to help, hype us up, even if it’s just to our face. The women I know are achieving great milestones every day, but they are too humble or too quiet or too scared or just honestly don’t think it’s impressive enough to share out when it very much is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch the water cooler talk&lt;/strong&gt;&lt;br&gt;
Yes, I know most of us are no longer near water coolers, and we aren’t socializing as much as we used to, but it is still important to create an inclusive environment, even in the virtual world.&lt;/p&gt;

&lt;p&gt;I love the recent focus on using more inclusive language, like asking for pronouns and choosing to use “you all” or “everyone” over “you guys”. We need to continue giving women a platform to speak, whether in a team meeting, a presentation, or another medium (unintentional pun). It’s important to know when to speak up for women and when to step aside and let their voices be heard.&lt;/p&gt;

&lt;p&gt;I have heard frustrations from many women about some of the “water cooler” talk in the tech scene. Many feel like they are being criticized for having more “feminine” interests and not always talking about sports or [insert another primarily male-dominated interest here]. And honestly, I can see where they’re coming from. Yeah, I am the commissioner of my Fantasy Football league, and I am also anxiously awaiting the next season of The Mandalorian. But I’m also watching The Bachelor on Tuesday nights, and don’t you dare dismiss me for that. Be conscious of your audience, and don’t make assumptions based on gender.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Educate yourself so that you can educate others&lt;/strong&gt;&lt;br&gt;
Earlier, I mentioned my frustration with this phenomenon of women in technology needing to be the best of friends. When I noticed this in a meeting I was in a few years ago, I pointed it out to a trusted colleague. He was shocked when I explained my perspective and apologetic that he didn’t notice it before. I very much understood, brushed it off, and moved on with my day. About a week later, he called me, saying it bothered him so much that he went out and bought a book on unconscious bias and had read it cover to cover over the weekend and asked me if I would hold him accountable going forward. It moved me to tears and still does today. When I say educate yourself, THIS is what I mean.&lt;/p&gt;

&lt;p&gt;Pick out your gaps, find your blind spots, be honest about the things you don’t know, and work to improve them. Hold others accountable, too, even if you’re still learning. If someone is posting sexist remarks, call it out. If you’re part of an interview team and the candidate pool severely lacks diversity, speak up. If you see something — a snide comment, rude behavior, any sort of harassment, etc. — say something. Your word holds more weight than you think it does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask them what they need&lt;/strong&gt;&lt;br&gt;
When all else fails, just ask us what you can do to help. We’re all different people with different needs and perspectives. What bothers me may not bother the woman standing next to me.&lt;/p&gt;

&lt;p&gt;I share these tips as general guidelines that I have found to be most helpful in my tech journey, and I’m sure it will evolve and change over time (and hopefully for the better). Chances are, if you’re reading this, you’re already way ahead of the curve, so be sure to share with a friend, colleague, or probably most beneficial, the Worst Guy You Know.&lt;/p&gt;

&lt;p&gt;For those that may be concerned or worried or just plain mad about some of the anecdotes I shared above, don’t be. Despite all the adversity and frustrations, I graduated first in my engineering class with summa cum laude. I went on to get a Master’s degree in Electrical &amp;amp; Computer Engineering while working full time.&lt;/p&gt;

&lt;p&gt;I continue to push the envelope and work towards excelling in my career every day, in any way I can. I have found such an incredible support system throughout my journey in tech so far, and as much as I hate the whole #NotAllMen hashtag, I have found some pretty phenomenal and supportive male colleagues, mentors, and friends along the way.&lt;/p&gt;

&lt;p&gt;We’re making strides, but we still have a long way to go. I’ll pay tribute to the old adage, what doesn’t kill us makes us stronger, right?&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>womenintech</category>
      <category>career</category>
    </item>
  </channel>
</rss>
