<?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>DEV Community: pugkung</title>
    <description>The latest articles on DEV Community by pugkung (@pugkung).</description>
    <link>https://dev.to/pugkung</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%2F960999%2F09d852c4-3162-40ba-a988-7c8f22b42b06.jpeg</url>
      <title>DEV Community: pugkung</title>
      <link>https://dev.to/pugkung</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pugkung"/>
    <language>en</language>
    <item>
      <title>Team Topologies</title>
      <dc:creator>pugkung</dc:creator>
      <pubDate>Mon, 22 Jan 2024 18:46:12 +0000</pubDate>
      <link>https://dev.to/pugkung/team-topologies-36il</link>
      <guid>https://dev.to/pugkung/team-topologies-36il</guid>
      <description>&lt;p&gt;I have been trying to look for an optimal way to ensure that my working team is efficiently and which area could be improved or moving toward to. The book &lt;em&gt;"Team Topologies"&lt;/em&gt; was being mentioned by my ex-boss and it caught my interest.&lt;/p&gt;

&lt;p&gt;This post will be about a short summary of the book contents&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7uwfqinu2gywgtiwhlx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7uwfqinu2gywgtiwhlx.jpg" alt="Book Cover" width="666" height="1000"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Sections
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Team Sizing&lt;/li&gt;
&lt;li&gt;Type of Team Structures&lt;/li&gt;
&lt;li&gt;Type of Team Interactions&lt;/li&gt;
&lt;li&gt;TLDR;&lt;/li&gt;
&lt;li&gt;Closing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Team Size &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Generally team size &lt;strong&gt;should be around 5-8 members&lt;/strong&gt; to avoid communication overload between members. &lt;/p&gt;

&lt;p&gt;Large teams or divisions may break down into sub-teams which can still share their skillset and expertise between teams.&lt;/p&gt;

&lt;p&gt;Each team could be divided (and should be aligned with each other) by &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business Area&lt;/li&gt;
&lt;li&gt;Regulatory&lt;/li&gt;
&lt;li&gt;Physical Location &lt;/li&gt;
&lt;li&gt;Technical Dependency&lt;/li&gt;
&lt;li&gt;Change Velocity&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Team Structures &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Team are generally identified into 4 categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;Type&lt;/th&gt;
        &lt;th&gt;Role&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Steam-Aligned&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Common team tied to certain product or business&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Complicated Subsystem&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Specialist in certain field&lt;/li&gt;
            &lt;li&gt;Maintain tightly coupled/legacy components&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Platform&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Offload underlying tasks for Stream-Aligned/Complicated Subsystem team&lt;/li&gt;
            &lt;li&gt;Provide generic services to other team&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Enabling&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Support other teams to achieve their goals&lt;/li&gt;
            &lt;li&gt;Discover and try to innovate how to improve workflow&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Team Interactions &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The interaction between team are generally put into 3 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Two (or more) teams are working closely in a given time frame for solving certain problems. All teams shared their ownership/responsibility together as whole.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X-as-a-Service&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;A team expose a certain way to interact with other team. Similar to how we sent request to API endpoint which require well-defined schema as input. Most interaction are predictable.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facilitating&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;An experienced team act as a mentor to another team to get over obstacles or encourage team to do something (eg. logging standard/agile coach/CICD)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;Mode&lt;/th&gt;
        &lt;th&gt;Pros&lt;/th&gt;
        &lt;th&gt;Cons&lt;/th&gt;
        &lt;th&gt;Example&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Collaboration&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Quick discovery&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Exhausting&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Platform↔Stream-Aligned&lt;/li&gt;
            &lt;li&gt;Complicated Subsystem↔Stream-Aligned&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;X-as-a-Service&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Well defined&lt;/li&gt;
            &lt;li&gt;Lower cognitive load&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Slow innovation&lt;/li&gt;
            &lt;li&gt;Lower consumer insight&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Platform↔Stream-Aligned&lt;/li&gt;
            &lt;li&gt;Complicated Subsystem↔Stream-Aligned&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Facilitating&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Improve deliverable velocity/quality&lt;/li&gt;
            &lt;li&gt;Further identify improvements&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Required experience from facilitating team&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
        &lt;td&gt;&lt;ul&gt;
            &lt;li&gt;Enabling↔Stream-Aligned&lt;/li&gt;
        &lt;/ul&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interaction mode are not meant to remain as-is forever. Teams will eventually change how to work together over time. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaborating teams established an communication agreement between teams (X-as-a-Service)&lt;/li&gt;
&lt;li&gt;Enabling team moved to facilitate another team&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TLDR; &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In summary, this book is meant for managers who are thriving to setup optimal team structure for software development which should be considered by team's type and how they should be interact each other&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Four fundamental teams&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stream-Aligned&lt;/strong&gt;: general team tied to product/service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complicated subsystem&lt;/strong&gt;: similar to steam-aligned, but maintain more complicated or legacy components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform&lt;/strong&gt;: provide shared services for other teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enabling&lt;/strong&gt;: expertise, but not tying to specific business area&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Three interaction modes&lt;/em&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Collaborating&lt;/strong&gt;: initial state of discovery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X-as-a-service&lt;/strong&gt;: goal for stable teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facilitating&lt;/strong&gt;: to enforce or encourage something&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In the end, Team Topologies meant to be an optimal "template" for team management. It explains the "most likely" efficient team format that we should be, or moving to when we are growing into a hugh organization in a rational way. &lt;/p&gt;

&lt;p&gt;Wether how much it could be carry out is depend on the constraints and how team member willing to open-up with the changes. These stuff may not be directly mention on the book, but it is all about communication and transparency of leadership people. The more trust we have, the less friction would be regardless of hardship (i believe...)&lt;/p&gt;

&lt;p&gt;For more detail, you can visit the author's website (&lt;a href="https://teamtopologies.com/"&gt;https://teamtopologies.com/&lt;/a&gt;) and you could also get their copy of book which will contain more examples and further reading references.&lt;/p&gt;

&lt;p&gt;I am currently reading another book that the author published &lt;em&gt;"Remote Team Interactions Workbook"&lt;/em&gt; and I would make another post about what I have learnt from it.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>management</category>
      <category>book</category>
    </item>
    <item>
      <title>Modify and Test AWS Lambda Function on the fly</title>
      <dc:creator>pugkung</dc:creator>
      <pubDate>Mon, 22 Jan 2024 18:45:56 +0000</pubDate>
      <link>https://dev.to/pugkung/modify-and-test-aws-lambda-function-on-the-fly-58hn</link>
      <guid>https://dev.to/pugkung/modify-and-test-aws-lambda-function-on-the-fly-58hn</guid>
      <description>&lt;h2&gt;
  
  
  The Problem... &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;AWS Lambda provide a convenience way to quickly edit and testing code on the web console so you don't have to modify you code on you IDE then deploy it onto the AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fve1ehd6s8gdbo4xqo2gh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fve1ehd6s8gdbo4xqo2gh.png" alt="AWS Lambda Console Editor" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometime, your lambda could grow very big (due to dependency libs) and AWS will not allow you to edit it on the console anymore...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jpnq9qnbaavbcfzb200.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jpnq9qnbaavbcfzb200.png" alt="Python Libs" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6l34u93k12lvew1ebnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6l34u93k12lvew1ebnf.png" alt="Large Function" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several ways to modify the code in this situations:&lt;/p&gt;

&lt;h1&gt;
  
  
  Solutions
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;1: Deploy Package (Traditional)&lt;/li&gt;
&lt;li&gt;2: Dirty Install&lt;/li&gt;
&lt;li&gt;3: AWS Cloud9&lt;/li&gt;
&lt;li&gt;4: AWS Toolkit&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy Package (Traditional) &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This is the supposedly to be the correct way to publish new version on to AWS Lambda as same as how you are going to deploy the code via CICD pipeline or whatever...&lt;/p&gt;

&lt;p&gt;What you have to do is pack you entire source code into a zip file (at root level) and upload it onto Lambda or S3 Bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4gseknh4kn4codyycjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4gseknh4kn4codyycjh.png" alt="Upload zip" width="728" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the code is uploaded it will automatically deployed as new version of the Lambda function and you can run test against it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ No surprise&lt;/td&gt;
&lt;td&gt;❌ Slow zip + upload&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Dirty Install &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;From the previous solution, we would want to avoid packing and upload the code onto Lambda from time to time. We will be keep minimal code under the Lambda function so we could still editing it on the console directly.&lt;/p&gt;

&lt;p&gt;What we are going to do is to download the required dependencies before each function call to ensure the runtime environment can see and use them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxcvtfterjd966vzdj33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxcvtfterjd966vzdj33.png" alt="Dirty Install Script" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code block below is an example code stub for installing &lt;strong&gt;request&lt;/strong&gt; library via pip before executing the code. Put it on the top of the Function code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import os
import sys
import subprocess

subprocess.call('pip install requests -t /tmp/ --no-cache-dir'.split(),
    stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
sys.path.insert(1, '/tmp/')
import requests

# implement whatever your code after this block
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Not taking space in Lambda Function&lt;/td&gt;
&lt;td&gt;❌ Introduce network cost/latency on every function call&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  AWS Cloud9 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;AWS provided a &lt;del&gt;Product&lt;/del&gt; Solution for software development on AWS itself. Cloud9 is an IDE running on website (under AWS Console). The IDE instance can be access by multiple developers and update the same code at the same time like how we did on Google Office apps. The IDE also have built in Terminal to run on the virtual environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsplwmkhni5x5ae2hd6zb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsplwmkhni5x5ae2hd6zb.png" alt="Cloud9 IDE" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the Cloud9 is based on the EC2 service, you could configure the Cloud9 instance to sit under the network that you need to integrate you application with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwz4w92yuagk7al1dx2wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwz4w92yuagk7al1dx2wn.png" alt="Cloud9 VPC Config" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also noted that Cloud9 service itself is free, but EC2 that use to host it doesn't. The larger instance (cpu/memory) to compile/execute code will cost you more money.&lt;/p&gt;

&lt;p&gt;Cloud9 may introduce new feature as the time you are reading, you could reference it from the AWS Cloud9 info page &lt;a href="https://aws.amazon.com/cloud9/"&gt;https://aws.amazon.com/cloud9/&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ No desktop installation required&lt;/td&gt;
&lt;td&gt;❌ Incurring EC2 Cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Can share codebase + environment with multiple collaborator at the same time&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Run under actual VPC, no additional configuration needed&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  AWS Toolkit &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;AWS Provide a plugin for JetBrains IntelliJ and PyCharm to manage access key/region connection between AWS and the IDE, so you can run the application against the AWS network directly&lt;/p&gt;

&lt;p&gt;For installation steps, refer to the guide provided by AWS here:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html"&gt;https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fpawhsdpowwo5es6lmp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fpawhsdpowwo5es6lmp.png" alt="AWS Toolkit" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is actually automation for executing AWS CLI over IAM and STS service which you can also do it manually and could also be use with other IDE or code editor as well.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Test your code against actual VPC&lt;/td&gt;
&lt;td&gt;❌ Need to reconfigure every time token is rotated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Edit + Debug your code on IntelliJ / PyCharm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Closing &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;There are several workarounds for editing large Lambda code. One may fit the need for the given constraints or frequency of code changes required.&lt;/p&gt;

&lt;p&gt;I hope this guide may give you an idea how to work around with AWS Lambda, so we can focus on productivity rather than frustrating over trivial things 🤪&lt;/p&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
