{"status":200,"article":{"url":"https://hackernoon.com/debugging-serverless-applications-with-dashbird-82a2ed86d757","publish_datetime":null,"title":"Debugging Serverless Applications with Dashbird","text":{"full":"","keywords":["debugging","serverless","applications","dashbird"],"summary":""},"authors":[],"media":{"images":["https://hackernoon.imgix.net/images/sia.svg?auto=format&fit=max&w=96","https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&fit=max&w=96","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2748%27%20height=%2748%27/%3e","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e","https://hackernoon.imgix.net/fallback-profile.png?auto=format&fit=max&w=96","https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&url=https://www.bitcoininsider.org/article/57408/debugging-serverless-applications-dashbird&size=16","https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&fit=max&w=3840","https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&fit=max&w=48","https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&fit=max&w=96","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2746%27%20height=%2746%27/%3e","https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&fit=max&w=3840","https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&fit=max&w=3840","https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&token=59acb979-66a8-4a0c-8d79-d7f8b479f130&auto=format&fit=max&w=3840","https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&fit=max&w=3840","https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png","https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&fit=max&w=3840","https://hackernoon.com/fallback-feat.png?auto=format&fit=max&w=3840","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e","https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&fit=max&w=96","https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&fit=max&w=48","data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7","https://hackernoon.imgix.net/computer.png?auto=format&fit=max&w=48","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2724%27%20height=%2724%27/%3e","https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&fit=max&w=96","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2727%27/%3e","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e","data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2722%27%20height=%2722%27/%3e","https://hackernoon.imgix.net/fallback-feat.png?auto=format&fit=max&w=3840","https://hackernoon.imgix.net/hn-icon.png?auto=format&fit=max&w=128","https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&fit=max&w=3840","https://hackernoon.imgix.net/images/viewblock.png?auto=format&fit=max&w=48"],"movies":[]},"html":"<!DOCTYPE html><html lang=\"en\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width\"/><link rel=\"preload\" as=\"image\" imagesrcset=\"https://hackernoon.imgix.net/hn-icon.png?auto=format&amp;fit=max&amp;w=64 1x, https://hackernoon.imgix.net/hn-icon.png?auto=format&amp;fit=max&amp;w=128 2x\"/><title>Debugging Serverless Applications with Dashbird | HackerNoon</title><link rel=\"preconnect\" href=\"https://api.hackernoon.com\"/><link rel=\"preconnect\" href=\"https://cdn.hackernoon.com\"/><link rel=\"preconnect\" href=\"https://hackernoon.imgix.net\"/><link rel=\"dns-prefetch\" href=\"https://cdn.hackernoon.com\"/><link rel=\"preload\" as=\"image\" imageSrcSet=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?w=768 768w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?w=900 900w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?w=1200 1200w\" imageSizes=\"(max-width: 768px) 100vw, 900px\"/><meta name=\"description\" content=\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\"/><meta property=\"og:title\" content=\"Debugging Serverless Applications with Dashbird | HackerNoon\"/><meta property=\"og:description\" content=\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\"/><meta name=\"image\" property=\"og:image\" content=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png\"/><meta property=\"twitter:title\" content=\"Debugging Serverless Applications with Dashbird | HackerNoon\"/><meta property=\"twitter:description\" content=\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\"/><meta property=\"twitter:image\" content=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png\"/><meta name=\"twitter:card\" content=\"summary_large_image\"/><meta name=\"twitter:site\" content=\"@hackernoon\"/><link rel=\"canonical\" href=\"https://hackernoon.com/debugging-serverless-applications-with-dashbird-82a2ed86d757\"/><script type=\"application/ld+json\">{\"@context\":\"http://schema.org\",\"@type\":\"Article\",\"name\":\"Debugging Serverless Applications with Dashbird\",\"headline\":\"Debugging Serverless Applications with Dashbird\",\"author\":{\"@type\":\"Person\",\"name\":\"Yan Cui\"},\"datePublished\":\"2019-01-29\",\"image\":\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png\",\"articleSection\":\"aws\",\"articleBody\":\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex. In this post, let\u2019s take a serverless application and see how can help you debug the application. Dashbird Challenges with serverless observability When it comes to observability, serverless has introduced some interesting challenges. For so long, we have relied on the use of agents and daemons to collect metrics and logs. They run silently in the background, away from our critical paths where we are concerned with minimizing user-facing latencies. They collect, buffer and publish these observability data in batches to improve efficiency. As a practice, they are so deeply ingrained into how we monitor our applications, until now. When it comes to serverless, specifically with managed platforms such as AWS Lambda, there\u2019s simply nowhere for us to install these agents! To collect metrics and logs as part of your function\u2019s invocation would understandably add overhead to its invocation time. Since AWS is collecting logs from your function asynchronously already, and publishing them to CloudWatch Logs. A common workaround is to subscribe to these logs and perform post-processing on them. Indeed, that is how Dashbird collects data about your function\u2019s execution. It subscribes the CloudWatch Logs log groups to a Kinesis stream and then processes the events from there. You can read about the advantages of this approach in . this article As our serverless applications become more complex, it\u2019s important for us to be able to trace executions across multiple functions. As the demo app demonstrates, even a simple user transaction can span across multiple event sources as well as Lambda functions. The demo\u00a0app Imagine you\u2019re building a Twitter clone. One of the core features of the system is to distribute a user\u2019s post to his followers\u2019 feeds. To implement this feature, imagine we have two separate API endpoints: POST posts/create\u00a0: to create a new post for the current user GET followers/{userId}\u00a0: to fetch a user\u2019s followers Each endpoint is handled by a separate Lambda function\u200a\u2014 and respectively. create-post get-followers When a user publishes a new post, the function would save the post in the DynamoDB table and also publish a event into a Kinesis stream. This event then triggers a function. This function would query the endpoint and then add the post to the followers\u2019 feeds. The function would query the DynamoDB table to return the IDs of the user\u2019s followers. create-post posts post-created distribute-post GET followers/{userId} get-followers followers For brevity sake I have omitted the logic for actually distributing the posts. So the overall architecture for our demo app looks like the following. To make things more interesting, each of the Lambda functions are hardwired to error or timeout based on a configurable probability. The source code for the demo app is , so feel free to try it out yourself. available on Github Introducing Dashbird Even with a simple serverless application like the one outlined above, we have quite a few functions to look after. Let\u2019s see how we can use Dashbird to help us monitor this application and debug issues. As soon as I log in, I have a high level dashboard for my account. In addition to the data I get in the AWS Lambda console (see below), the Dashbird dashboard has two useful data points: Average memory utilization for the functions Cost for the Lambda invocations Next, in Dashbird\u2019s Lambda console, I can see a high level summary of my functions and their activities over the last 24 hours. What I find very useful here is the fact that it highlights functions that have been idle for 10 days as inactive. As your serverless architecture expands and you end up with hundreds of functions, maintained by different teams, it\u2019s very difficult to track which functions are no longer needed. Having redundant functions lying around is a security risk as they remain an attack surface that can be exploited. While this view alone cannot tell you definitively which functions are no longer used. Many functions are not run on a regular basis. Maybe they are part of a cron job that only runs once a month. Or maybe they are only used during disaster recovery scenarios. Nonetheless, being aware of which functions are inactive encourages teams to ask the question \u201cIs this function still needed?\u201d. From here, maybe better practices can emerge. For example, use tags to mark functions that are expected to be used sparingly so they are not flagged by these checks. If I navigate to one of the functions, then I have a function-centric view of invocation time, error, cost and memory utilization. In addition, I can also see a list of the recent invocations. What\u2019s really useful here is that cold starts and retries are clearly labelled. When debugging live issues this lets me quickly narrow down the invocations that I need to pay attention to. Straight away, I can see that 3 of the invocations timed out after 6 seconds. What\u2019s more, the original Kinesis event was retried 3 times and finally succeeded on the third retry. If I click on the \u201c+\u201d button next to an invocation then I can drill down to the invocation itself. Here I can see the logs and X-Ray trace for this invocation in one screen. This is great as it saves me from having to constantly jump between different AWS console. Debugging with\u00a0Dashbird As mentioned before, the demo app is hardwired to error and timeout. And sure enough, when these failure cases happen, Dashbird\u2019s built-in alerting kicks in and I promptly received emails notifying me that something went wrong. While this built-in alerting is great, I couldn\u2019t see any settings to adjust the alert sensitivity. As I followed the links in the emails, to the function, then the failed invocation. Dashbird neatly groups the related invocations\u200a\u2014\u200athe initial timeout, and the subsequent retries\u200a\u2014\u200atogether. I can quickly see that the failed Kinesis event was successfully processed on the 3rd retry. Dashbird also tracks the open issues in the Errors console. Now that I know the problem has resolved itself I can go ahead and resolve the error. Tailing function\u00a0logs Another nice feature of Dashbird is that it\u2019s able to tail the logs for multiple functions at the same time. For the demo app, I want to see the logs for both the and functions as I curl the endpoint. create-post distribute-post POST posts/create That way, I can see that the event was successfully published into the Kinesis stream, and was subsequently received by the function. distribute-post Conclusion Overall I was impressed with what Dashbird has to offer, and it\u2019s clear that a lot of thought has gone into the product. It has many nice touches that makes debugging much easier. For example, grouping retries together, and integrating X-Ray traces and logs in one screen. These might seem like trivial niceties, but they can make a big difference under the high-pressure scenarios of dealing with a live issue. From what I have been able to see, I think Dashbird is a really great tool. The main thing missing for me is the ability to trace executions end-to-end. Personally, I\u2019d really like to see the entire execution traced from the API call to create a post, all the way to the function performing a Query against the DynamoDB table. get-followers followers If you\u2019re solely relying on the built-in AWS tools (CloudWatch, CloudWatch Logs, and X-Ray) then you should give Dashbird a try. Why not sign up for a free trial, and deploy the demo app to your environment so you can see how Dashbird can help you debug your serverless application? Originally published at dashbird.io on January 25, 2019.\"}</script><meta name=\"next-head-count\" content=\"20\"/><link rel=\"preload\" as=\"font\" href=\"/fonts/HackerNoonFont/hackernoonv1-regular-webfont.woff2\" type=\"font/woff2\" crossorigin=\"anonymous\"/><link rel=\"preconnect\" href=\"https://fonts.googleapis.com\"/><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin=\"anonymous\"/><noscript><link rel=\"stylesheet\" data-href=\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;700&amp;family=IBM+Plex+Sans:wght@400;700&amp;family=Inter:wght@400;600;900&amp;display=swap\"/></noscript> <script async=\"\" src=\"https://www.googletagmanager.com/gtag/js?id=G-ECJJ2Q2SJQ\"></script><script id=\"ga4-init\">\n                window.dataLayer = window.dataLayer || [];\n                function gtag(){dataLayer.push(arguments);}\n\n                // Consent Mode: default to denied\n                gtag('consent', 'default', {\n                  'ad_storage': 'denied',\n                  'analytics_storage': 'denied',\n                  'ad_user_data': 'denied',\n                  'ad_personalization': 'denied'\n                });\n\n                gtag('js', new Date());\n                gtag('config', 'G-ECJJ2Q2SJQ');\n              </script><script id=\"iubenda-init\">\n                function initIubenda() {\n                  (async function () {\n                    try {\n                      const res = await fetch(\"https://geolocation-db.com/json/\");\n                      const data = await res.json();\n                      const country = data && data.country_code;\n\n                      const GDPR_COUNTRIES = [\n                        \"AT\",\"BE\",\"BG\",\"HR\",\"CY\",\"CZ\",\"DK\",\"EE\",\"FI\",\"FR\",\"DE\",\"GR\",\"HU\",\n                        \"IE\",\"IT\",\"LV\",\"LT\",\"LU\",\"MT\",\"NL\",\"PL\",\"PT\",\"RO\",\"SK\",\"SI\",\"ES\",\n                        \"SE\",\"IS\",\"LI\",\"NO\",\"UK\",\"GB\"\n                      ];\n                      var isGdpr = GDPR_COUNTRIES.indexOf(country) > -1;\n\n                      window._iub = window._iub || [];\n                      window._iub.csConfiguration = {\n                        siteId: 1848357,\n                        cookiePolicyId: 18778700,\n                        lang: \"en\",\n                        enableTcf: false,\n                        googleAdditionalConsentMode: true,\n                        banner: {\n                          position: \"bottom\",\n                          rejectButtonDisplay: true,\n                          explicitWithdrawal: true,\n                          customizeButtonDisplay: true,\n                          acceptButtonDisplay: true,\n                          showTotalNumberOfProviders: false,\n                          display: isGdpr\n                        }\n                      };\n\n                      var iubScript = document.createElement(\"script\");\n                      iubScript.src = \"https://cdn.iubenda.com/cs/iubenda_cs.js\";\n                      iubScript.async = true;\n                      document.head.appendChild(iubScript);\n\n                      if (!isGdpr) {\n                        gtag('consent', 'update', {\n                          'ad_storage': 'granted',\n                          'analytics_storage': 'granted',\n                          'ad_user_data': 'granted',\n                          'ad_personalization': 'granted'\n                        });\n                      }\n                    } catch (e) {\n                      console.error(\"Iubenda geolocation failed\", e);\n                    }\n                  })();\n                }\n\n                // Defer until browser is idle \u2014 never blocks initial render\n                if (typeof requestIdleCallback !== 'undefined') {\n                  requestIdleCallback(initIubenda, { timeout: 3000 });\n                } else {\n                  setTimeout(initIubenda, 1000);\n                }\n              </script><script id=\"iubenda-consent-bridge\">\n                window.addEventListener(\"iubenda_consent_given\", function () {\n                  gtag('consent', 'update', {\n                    'ad_storage': 'granted',\n                    'analytics_storage': 'granted',\n                    'ad_user_data': 'granted',\n                    'ad_personalization': 'granted'\n                  });\n\n                  gtag('event', 'page_view', {\n                    page_title: document.title,\n                    page_location: location.href,\n                    page_path: location.pathname + location.search\n                  });\n                });\n              </script><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin /><link rel=\"preload\" href=\"/_next/static/css/b10f4312eb1a5c02.css\" as=\"style\"/><link rel=\"stylesheet\" href=\"/_next/static/css/b10f4312eb1a5c02.css\" data-n-g=\"\"/><link rel=\"preload\" href=\"/_next/static/css/6d530d6069fd563f.css\" as=\"style\"/><link rel=\"stylesheet\" href=\"/_next/static/css/6d530d6069fd563f.css\" data-n-p=\"\"/><noscript data-n-css=\"\"></noscript><script defer=\"\" nomodule=\"\" src=\"/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js\"></script><script src=\"https://accounts.google.com/gsi/client\" defer=\"\" data-nscript=\"beforeInteractive\"></script><script defer=\"\" src=\"/_next/static/chunks/2033.539d838d6bcd8bd8.js\"></script><script defer=\"\" src=\"/_next/static/chunks/3082-aee0a240f1adbc5a.js\"></script><script defer=\"\" src=\"/_next/static/chunks/5307.b8b65e9f341e6cbf.js\"></script><script defer=\"\" src=\"/_next/static/chunks/9700.cd6e8d0f65806888.js\"></script><script defer=\"\" src=\"/_next/static/chunks/4089.53b045ece5e8ab77.js\"></script><script defer=\"\" src=\"/_next/static/chunks/398.31a12533cb6f2ba3.js\"></script><script defer=\"\" src=\"/_next/static/chunks/2819.61b7d341206d3ed7.js\"></script><script defer=\"\" src=\"/_next/static/chunks/e4405247-b92cad2245dc32a9.js\"></script><script defer=\"\" src=\"/_next/static/chunks/1606726a-a5554f21a86069ef.js\"></script><script defer=\"\" src=\"/_next/static/chunks/3392295e-d6a14435d0e6cc1f.js\"></script><script defer=\"\" src=\"/_next/static/chunks/aa74d784-a2598698cfe62798.js\"></script><script defer=\"\" src=\"/_next/static/chunks/b3e8167d-b2aa66c4b942030a.js\"></script><script defer=\"\" src=\"/_next/static/chunks/5752-f52b8cf59b581f0a.js\"></script><script defer=\"\" src=\"/_next/static/chunks/4140-aad2886a7ded436d.js\"></script><script defer=\"\" src=\"/_next/static/chunks/3785-309c253d4be151fd.js\"></script><script defer=\"\" src=\"/_next/static/chunks/4804-0be234a5b629b212.js\"></script><script defer=\"\" src=\"/_next/static/chunks/3197-5551de4d59578971.js\"></script><script defer=\"\" src=\"/_next/static/chunks/6952-ddc2537ffb30a068.js\"></script><script defer=\"\" src=\"/_next/static/chunks/7060-87aa0e9c91739fbc.js\"></script><script defer=\"\" src=\"/_next/static/chunks/4291.86e438f2753cce1c.js\"></script><script defer=\"\" src=\"/_next/static/chunks/5632.48402f700f45d3fb.js\"></script><script defer=\"\" src=\"/_next/static/chunks/2486-625df0fc138021d5.js\"></script><script defer=\"\" src=\"/_next/static/chunks/5232.be7f7a3732b63a87.js\"></script><script defer=\"\" src=\"/_next/static/chunks/8656.80cbc63e56c8365c.js\"></script><script src=\"/_next/static/chunks/webpack-95952da491bd9a90.js\" defer=\"\"></script><script src=\"/_next/static/chunks/framework-79bce4a3a540b080.js\" defer=\"\"></script><script src=\"/_next/static/chunks/main-87ffee5d2ac3498b.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_app-af9faf1afd135a33.js\" defer=\"\"></script><script src=\"/_next/static/chunks/3207-b9047a24ce64a313.js\" defer=\"\"></script><script src=\"/_next/static/chunks/7603-34a3fb900a665ed0.js\" defer=\"\"></script><script src=\"/_next/static/chunks/2512-e0473ce0fec2f235.js\" defer=\"\"></script><script src=\"/_next/static/chunks/7206-20942580e99d6fa8.js\" defer=\"\"></script><script src=\"/_next/static/chunks/5935-4a2503527908a2b1.js\" defer=\"\"></script><script src=\"/_next/static/chunks/6664-a9ac66dd34775103.js\" defer=\"\"></script><script src=\"/_next/static/chunks/4423-7ebecf7eae66949a.js\" defer=\"\"></script><script src=\"/_next/static/chunks/5434-e5b41e1ffc4480d6.js\" defer=\"\"></script><script src=\"/_next/static/chunks/6533-a2efaedd44f8470e.js\" defer=\"\"></script><script src=\"/_next/static/chunks/889-0a6fd7798d2b8b6c.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/%5Bslug%5D-833d2805ff98c2a7.js\" defer=\"\"></script><script src=\"/_next/static/YRhe9DpUXZZf-6terF8nk/_buildManifest.js\" defer=\"\"></script><script src=\"/_next/static/YRhe9DpUXZZf-6terF8nk/_ssgManifest.js\" defer=\"\"></script><style data-styled=\"\" data-styled-version=\"5.3.11\">.bXsBAm{border-radius:50%;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:44px;width:44px;}/*!sc*/\n.bXsBAm.isBrand{border:2px solid #f5ec43 !important;}/*!sc*/\ndata-styled.g30[id=\"sc-b25c0d3d-0\"]{content:\"bXsBAm,\"}/*!sc*/\n</style><style data-href=\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;700&family=IBM+Plex+Sans:wght@400;700&family=Inter:wght@400;600;900&display=swap\">@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=-F63fjptAgt5VM-kVkqdyU8n5is&skey=b40c83751ce1954d&v=v20) format('woff')}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=-F6qfjptAgt5VM-kVkqdyU8n3pQP8lQ&skey=bdce5c587d610a04&v=v20) format('woff')}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:normal;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSD6llzAw&skey=db4d85f0f9937532&v=v23) format('woff')}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=zYXGKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1swZSAXcomDVmadSDDV5zAw&skey=db4d85f0f9937532&v=v23) format('woff')}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZs&skey=c491285d6722e4fa&v=v20) format('woff')}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZs&skey=c491285d6722e4fa&v=v20) format('woff')}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/l/font?kit=UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuBWYMZs&skey=c491285d6722e4fa&v=v20) format('woff')}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iIq131nj-otFQ.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1isq131nj-otFQ.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iAq131nj-otFQ.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iEq131nj-otFQ.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl1FgsAXHNlYzg.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3pQPwlRFgsAXHNlYzg.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl9FgsAXHNlYzg.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl5FgsAXHNlYzg.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3pQPwlBFgsAXHNk.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxTKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxaKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxdKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxRKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxQKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxTKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxaKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxdKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxRKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxQKYbSB4ZhRNU.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/ibmplexsans/v23/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style></head><body><div id=\"__next\" data-reactroot=\"\"><div class=\"bg-light text-lightText font-[ibm-plex-mono]\"><main><header class=\" font-[ibm-plex-sans] h-[88px] sm:h-[131px]  fixed top-0 left-0 w-full z-50 transition-all duration-500 ease-in-out translate-y-0 \"><div class=\"flex items-center justify-between bg-primary  lg:navbar h-[50px] sm:min-h-[75px] transition-all duration-100 shadow-md  w-full\"><div class=\"hidden lg:flex navbar-start h-full items-center ml-1\"><button class=\"flex items-center hover:scale-[1.01] justify-center rounded-lg text-base px-4 font-bold py-2 border-none bg-primary-content text-primaryContentText\">Discover Anything<i class=\"hn hn-search text-lg ml-4 text-primaryContentText \"></i></button></div><div class=\"nav-start lg:navbar-center ml-3 lg:ml-0\"><a href=\"/\" class=\"relative z-10 flex items-center space-x-2 hover:scale-[1.02]\"><div class=\"w-[35px] h-[35px] sm:w-[50px] sm:h-[50px] rounded p-1 bg-hnLogo\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e\"/></span><img alt=\"Hackernoon logo\" srcSet=\"https://hackernoon.imgix.net/hn-icon.png?auto=format&amp;fit=max&amp;w=64 1x, https://hackernoon.imgix.net/hn-icon.png?auto=format&amp;fit=max&amp;w=128 2x\" src=\"https://hackernoon.imgix.net/hn-icon.png?auto=format&amp;fit=max&amp;w=128\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/></span></div><span class=\"font-[HackerNoon] text-lg sm:text-2xl font-bold text-primary-content  tracking-wider hidden xs:block\">Hackernoon</span></a></div><div class=\"navbar-end h-full flex items-center min-w-[100px] lg:min-w-[200px] space-x-4 mr-2\"><div class=\" h-[40px] flex items-center justify-center\"></div><div class=\"hidden sm:flex space-x-4 \"><button class=\"px-4 font-bold text-base py-1 sm:py-2 bg-primary-content text-primaryContentText rounded-md transition-all duration-300\">Signup</button><a href=\"/new\" class=\"px-4 hover:scale-105 font-bold text-base py-2 bg-primary-content text-primaryContentText rounded-md \">Write</a></div><button class=\"btn border-none p-0 m-0 lg:hidden bg-transparent hover:bg-transparent text-primary-content hover:scale-110\"><i class=\"hn hn-search text-xl mr-2 \"></i></button><button class=\"lg:flex hidden items-center hover:scale-110 text-primary-content\"><i width=\"20\" class=\"hn hn-bell text-2xl w-4 h-4 sm:w-6 sm:h-6\"></i></button><button class=\"flex items-center hover:scale-110 text-primary-content\"><i class=\"hn hn-bars text-2xl text-primary-content\"></i></button></div></div><div class=\"z-20 hidden lg:block h-[52px] transition-all duration-500 ease-in-out\"><nav class=\"h-[52px] bg-secondary animate-pulse\"></nav></div><div class=\" shadow-md flex items-center \"><div class=\"bg-accent text-accent-content flex items-center h-[38px] sm:min-h-[56px]  font-[ibm-plex-sans] w-full  relative z-10 opacity-100\"><div class=\"h-[48px] bg-[transparent] animate-pulse\"></div></div></div></header><div class=\"transition-all duration-200 pt-[88px] sm:pt-[131px] lg:pt-[183px]\"><div data-rht-toaster=\"\" style=\"position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none\"></div><div class=\"\"><div class=\"bg-light text-lightText h-auto xl:mx-2 \"><div class=\"col-span-12\"><div class=\"max-w-[1200px] mx-auto px-2 xs:px-4 xl: xl:px-0 mt-10\"><div class=\"\"><div><div class=\"text-xs\"><div class=\"mb-4 flex gap-2\"><span class=\"bg-lightAlt p-2 rounded-lg inline-flex gap-2 items-center justify-start\"><i class=\"hn hn-star-solid\"></i> <!-- -->483<!-- --> <!-- -->reads</span></div><h1 class=\"font-bold line-clamp-4 leading-snug text-lightTextStrong \n              text-xl sm:text-2xl xl:text-3xl 3xl:text-4xl tracking-wide\n\n                \">Debugging Serverless Applications with Dashbird</h1><div class=\"flex flex-wrap border-y border-lightBorder my-4 sm:my-2 sm:border-t-0 py-2 items-center justify-between text-lightTextLight text-sm sm:text-base xl:text-xl \"><div class=\"flex flex-wrap justify-between w-full xs:w-auto items-center gap-2\"><span class=\"flex items-center flex-wrap gap-2 mr-10 sm:mr-0 \">by<div class=\"dropdown dropdown-hover \"><label tabindex=\"0\"><strong class=\"...\" href=\"/u/theburningmonk\">Yan Cui</strong></label><div class=\"dropdown-content z-[1] pt-2 sm:pt-1 left-[-40px] min-w-[250px] bg-transparent menu w-auto rounded \"><div class=\"w-full \"><div class=\" p-4 border border-lightBorder bg-light rounded-lg\"><a href=\"/u/theburningmonk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"flex items-start text-sm rounded-lg group gap-2\"><div class=\"\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" loading=\"lazy\"/></noscript></span></div><span class=\"flex flex-col min-w-0\"><span class=\"font-bold group-hover:underline text-sm truncate\"><span class=\"text-xs font-light mr-1\">by</span>Yan Cui</span><span class=\"text-sm false text-ellipsis overflow-hidden whitespace-nowrap\" title=\"@theburningmonk\">@<!-- -->theburningmonk</span></span></a><p class=\"text-sm overflow-x-auto mt-2 text-bodyTxtLight\">AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.</p><div class=\"mt-4\"><div class=\"w-full flex justify-start\"><div class=\"w-full\"><form class=\"w-full flex flex-col items-start gap-2 \"><div class=\"flex w-full\"><input type=\"email\" class=\"flex-grow  border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2} \n                  }\" placeholder=\"name@company.com\" name=\"email\" required=\"\" value=\"\"/><button type=\"submit\" class=\"text-base} \n                bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText  px-2 py-1 rounded-r-md  font-bold\">Subscribe</button></div></form></div></div></div></div></div></div></div></span><div class=\"flex gap-2 items-center cursor-pointer\"><span class=\"hidden sm:block w-1 h-1 bg-lightTextLight mx-4 rounded-full\"></span><span class=\"text-xs xs:text-sm lg:text-base\">January 29th, 2019</span></div></div><div class=\"hidden xl:block\"><div class=\" flex items-center gap-4 \"><span class=\"tooltip tooltip-left tooltip-left  w-7 h-7 flex items-center justify-center  cursor-pointer\" data-tip=\"Terminal Reader\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Read on Terminal Reader\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Read on Terminal Reader\" srcSet=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span><span class=\"tooltip tooltip-left tooltip-left  w-7 h-7 flex items-center justify-center  cursor-pointer\" data-tip=\"Print this story\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Print this story\" data-tip=\"true\" data-for=\"print-page\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Print this story\" data-tip=\"true\" data-for=\"print-page\" srcSet=\"https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span><span class=\"tooltip tooltip-left tooltip-left   w-7 h-7 flex items-center justify-center cursor-pointer\" data-tip=\"Read this story w/o Javascript\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Read this story w/o Javascript\" data-tip=\"true\" data-for=\"arweave-backup\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Read this story w/o Javascript\" data-tip=\"true\" data-for=\"arweave-backup\" srcSet=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span></div></div></div></div><div class=\"mb-2 \"><div class=\"flex justify-between \"><button class=\"flex m-1 px-2 xl:px-4 h-[40px] items-center font-[hackernoon2] bg-dark text-darkText text-xs sm:text-sm rounded-lg border border-lightBorder\">TLDR <i class=\"hn hn-angle-right text-base ml-1 \"></i></button><div class=\"flex items-center gap-2\"><div class=\"hidden sm:block xl:hidden\"><div class=\" flex items-center gap-4 \"><span class=\"tooltip tooltip-left undefined  w-7 h-7 flex items-center justify-center  cursor-pointer\" data-tip=\"Terminal Reader\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Read on Terminal Reader\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Read on Terminal Reader\" srcSet=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span><span class=\"tooltip tooltip-left undefined  w-7 h-7 flex items-center justify-center  cursor-pointer\" data-tip=\"Print this story\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Print this story\" data-tip=\"true\" data-for=\"print-page\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Print this story\" data-tip=\"true\" data-for=\"print-page\" srcSet=\"https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span><span class=\"tooltip tooltip-left undefined   w-7 h-7 flex items-center justify-center cursor-pointer\" data-tip=\"Read this story w/o Javascript\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e\"/></span><img alt=\"Read this story w/o Javascript\" data-tip=\"true\" data-for=\"arweave-backup\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Read this story w/o Javascript\" data-tip=\"true\" data-for=\"arweave-backup\" srcSet=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></span></div></div><div class=\"xl:hidden\"></div></div><div class=\"hidden xl:flex items-center flex-wrap gap-2\"></div></div></div></div></div></div><div class=\"max-w-[1200px] mx-auto\"><div class=\"flex items-center justify-center w-full h-full\"><div class=\"relative group cursor-zoom-in transition-transform hover:scale-[1.01] max-w-full mx-auto px-[14px] md:px-0 w-full\"><button class=\"absolute top-2 right-5 z-10 w-6 h-6 rounded flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity\"><i class=\"hn hn-download text-darkText bg-dark p-2 rounded-xl text-base\"></i></button><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:40.9375%\"></span><img alt=\"featured image - Debugging Serverless Applications with Dashbird\" decoding=\"async\" fetchPriority=\"high\" sizes=\"(max-width: 768px) 100vw, 1200px\" srcSet=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=3840\" data-nimg=\"responsive\" class=\"w-full h-auto object-contain rounded-lg shadow-lg my-0\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;data:image/svg+xml;base64,CiAgICA8c3ZnIHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjY1NSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJnIj4KICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMjIiIG9mZnNldD0iMjAlIiAvPgogICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzBmMCIgb2Zmc2V0PSI1MCUiIC8+CiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjIyIiBvZmZzZXQ9IjgwJSIgLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0IHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjY1NSIgZmlsbD0iIzIyMiIgLz4KICAgICAgPHJlY3QgaWQ9InIiIHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjY1NSIgZmlsbD0idXJsKCNnKSIgLz4KICAgICAgPGFuaW1hdGUgeGxpbms6aHJlZj0iI3IiIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209Ii0xNjAwIiB0bz0iMTYwMCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiICAvPgogICAgPC9zdmc+&quot;)\"/><noscript><img alt=\"featured image - Debugging Serverless Applications with Dashbird\" decoding=\"async\" fetchPriority=\"high\" sizes=\"(max-width: 768px) 100vw, 1200px\" srcSet=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png?auto=format&amp;fit=max&amp;w=3840\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-auto object-contain rounded-lg shadow-lg my-0\" loading=\"eager\"/></noscript></span></div></div></div><div class=\"px-2 xs:px-4 3xl:px-0 my-4 sm:mt-4 sm:mb-6 max-w-[1200px] 6xl:max-w-[1200px] mx-auto \"></div><div class=\" flex xl:hidden bg-light z-10 mx-auto gap-4 items-center border-y sticky top-[38px] sm:top-[56px] py-2 sm:py-0 \"><div class=\"w-[1200px] mx-auto px-4 flex justify-between items-center\"><div class=\"6xl:hidden dropdown dropdown-bottom dropdown-hover\"><div tabindex=\"0\" role=\"button\" class=\"flex text-sm rounded-lg py-2\"><div class=\"mr-2 flex -space-x-2 items-center \"><div class=\"\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2748%27%20height=%2748%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"w-10 h-10 sm:w-12 sm:h-12 bg-light relative border border-lightBorder rounded-full object-contain\" style=\"z-index:1;position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"z-index:1;position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-10 h-10 sm:w-12 sm:h-12 bg-light relative border border-lightBorder rounded-full object-contain\" loading=\"lazy\"/></noscript></span></div></div><div class=\"flex-col hidden sm:flex flex-wrap\"><span class=\"font-bold mx-2 text-sm\"><span class=\"text-xs font-light mr-1\">by</span>Yan Cui</span><span class=\"text-sm ml-2\">@<!-- -->theburningmonk</span></div></div><ul tabindex=\"0\" class=\"dropdown-content menu w-[300px] py-1 left-[-20px] bg-light px-1 ml-4 rounded-b-lg 3xl:border-none rounded-boxabsolute z-50\"><div class=\"flex w-full flex-col gap-4\"><div><div class=\"w-full \"><div class=\" p-4 border border-lightBorder bg-light rounded-lg\"><a href=\"/u/theburningmonk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"flex items-start text-sm rounded-lg group gap-2\"><div class=\"\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" loading=\"lazy\"/></noscript></span></div><span class=\"flex flex-col min-w-0\"><span class=\"font-bold group-hover:underline text-sm truncate\"><span class=\"text-xs font-light mr-1\">by</span>Yan Cui</span><span class=\"text-sm false text-ellipsis overflow-hidden whitespace-nowrap\" title=\"@theburningmonk\">@<!-- -->theburningmonk</span></span></a><p class=\"text-sm overflow-x-auto mt-2 text-bodyTxtLight\">AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.</p><div class=\"mt-4\"><div class=\"w-full flex justify-start\"><div class=\"w-full\"><form class=\"w-full flex flex-col items-start gap-2 \"><div class=\"flex w-full\"><input type=\"email\" class=\"flex-grow  border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2} \n                  }\" placeholder=\"name@company.com\" name=\"email\" required=\"\" value=\"\"/><button type=\"submit\" class=\"text-base} \n                bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText  px-2 py-1 rounded-r-md  font-bold\">Subscribe</button></div></form></div></div></div></div></div></div></div></ul></div><div class=\"w-[200px] 6xl:hidden\"><div class=\" flex flex-row  flex-row-reverse  items-start gap-4 \"><span class=\"tooltip tooltip-left cursor-pointer\" data-tip=\"Bookmark\"><button class=\"3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[32px] w-[32px] md:h-[40px] md:w-[40px] flex items-center justify-center border border-lightBorder\"><i class=\"hn hn-bookmark text-lightText text-xl md:text-2xl \"></i></button></span><span class=\"tooltip tooltip-left cursor-pointer\" data-tip=\"Comment\"><button class=\"3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[32px] w-[32px] md:h-[40px] md:w-[40px] flex items-center justify-center border border-lightBorder\"><i class=\"hn hn-comment text-lightText text-xl md:text-2xl\"></i></button></span><div class=\"dropdown dropdown-bottom dropdown-hover group \"><label tabindex=\"0\" class=\"flex items-center cursor-pointer justify-center border border-lightBorder 3xl:group-hover:bg-lightAlt group-hover:bg-light h-[32px] w-[32px] md:h-[40px] md:w-[40px] p-1 md:p-2 rounded \"><i class=\"hn hn-share text-xl md:text-2xl\"></i></label><ul tabindex=\"0\" class=\"dropdown-content bg-light z-[1] py-4 px-4 3xl:px-0 3xl:py-2 border 3xl:border-none flex flex-col items-center justify-center gap-2 \"><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\" hn hn-copy text-lightText  text-2xl \"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-facebook-round text-lightText text-2xl\"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-x text-lightText text-2xl\"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-linkedin text-lightText text-2xl\"></i></button><a href=\"/cdn-cgi/l/email-protection#fac5898f98909f998ec7b3dcd982c8cdc19eda9693919fda8e95da89929b889fda9bda96939491da8d938e92da83958fdadc9b978ac198959e83c7\" class=\"border p-2 rounded inline-block hover:bg-lightAlt\"><i class=\"hn hn-envelope text-lightText text-2xl\"></i></a></ul></div></div></div></div></div><div class=\"flex max-w-[1100px] 2xl:max-w-[1200px] mx-auto justify-center flex-row gap-4 items-start mt-10 \"><div class=\"sticky top-[75px] z-40\"><div class=\"hidden xl:block dropdown z-25 dropdown-right dropdown-hover\"><div class=\"mr-2 flex gap-2 flex-col justify-center flex-wrap items-center \"><div class=\"\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2746%27%20height=%2746%27/%3e\"/></span><img alt=\"Yan Cui\" decoding=\"async\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-nimg=\"intrinsic\" class=\"w-12 h-12 relative !border-solid !border !border-lightBorder !rounded-full object-contain\" style=\"z-index:1;position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" decoding=\"async\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" data-nimg=\"intrinsic\" style=\"z-index:1;position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-12 h-12 relative !border-solid !border !border-lightBorder !rounded-full object-contain\" loading=\"lazy\"/></noscript></span></div></div><ul tabindex=\"0\" class=\"dropdown-content w-[400px] md:w-[470px] rounded-lg z-[100] bg-light flex flex-col items-center justify-center gap-2\"><div class=\"flex w-full flex-col gap-4\"><div><div class=\"w-full \"><div class=\" p-4 border border-lightBorder bg-light rounded-lg\"><a href=\"/u/theburningmonk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"flex items-start text-sm rounded-lg group gap-2\"><div class=\"\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-10 h-9 border-solid border border-lightBorder rounded-full object-contain\" loading=\"lazy\"/></noscript></span></div><span class=\"flex flex-col min-w-0\"><span class=\"font-bold group-hover:underline text-sm truncate\"><span class=\"text-xs font-light mr-1\">by</span>Yan Cui</span><span class=\"text-sm false text-ellipsis overflow-hidden whitespace-nowrap\" title=\"@theburningmonk\">@<!-- -->theburningmonk</span></span></a><p class=\"text-sm overflow-x-auto mt-2 text-bodyTxtLight\">AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.</p><div class=\"mt-4\"><div class=\"w-full flex justify-start\"><div class=\"w-full\"><form class=\"w-full flex flex-col items-start gap-2 \"><div class=\"flex w-full\"><input type=\"email\" class=\"flex-grow  border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2} \n                  }\" placeholder=\"name@company.com\" name=\"email\" required=\"\" value=\"\"/><button type=\"submit\" class=\"text-base} \n                bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText  px-2 py-1 rounded-r-md  font-bold\">Subscribe</button></div></form></div></div></div></div></div></div></div></ul></div></div><div class=\"flex-1 flex flex-col justify-center \"></div><div class=\"hidden xl:block sticky top-[75px] px-3\"><div class=\" flex flex-col flex-row-reverse  items-start gap-4 \"><span class=\"tooltip tooltip-left cursor-pointer\" data-tip=\"Bookmark\"><button class=\"3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[32px] w-[32px] md:h-[40px] md:w-[40px] flex items-center justify-center border border-lightBorder\"><i class=\"hn hn-bookmark text-lightText text-xl md:text-2xl \"></i></button></span><span class=\"tooltip tooltip-left cursor-pointer\" data-tip=\"Comment\"><button class=\"3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[32px] w-[32px] md:h-[40px] md:w-[40px] flex items-center justify-center border border-lightBorder\"><i class=\"hn hn-comment text-lightText text-xl md:text-2xl\"></i></button></span><div class=\"dropdown dropdown-bottom dropdown-hover group \"><label tabindex=\"0\" class=\"flex items-center cursor-pointer justify-center border border-lightBorder 3xl:group-hover:bg-lightAlt group-hover:bg-light h-[32px] w-[32px] md:h-[40px] md:w-[40px] p-1 md:p-2 rounded \"><i class=\"hn hn-share text-xl md:text-2xl\"></i></label><ul tabindex=\"0\" class=\"dropdown-content bg-light z-[1] py-4 px-4 3xl:px-0 3xl:py-2 border 3xl:border-none flex flex-col items-center justify-center gap-2 \"><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\" hn hn-copy text-lightText  text-2xl \"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-facebook-round text-lightText text-2xl\"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-x text-lightText text-2xl\"></i></button><button class=\"border p-2 rounded hover:bg-lightAlt\"><i class=\"hn hn-linkedin text-lightText text-2xl\"></i></button><a href=\"/cdn-cgi/l/email-protection#8bb4f8fee9e1eee8ffb6c2ada8f3b9bcb0efabe7e2e0eeabffe4abf8e3eaf9eeabeaabe7e2e5e0abfce2ffe3abf2e4feabadeae6fbb0e9e4eff2b6\" class=\"border p-2 rounded inline-block hover:bg-lightAlt\"><i class=\"hn hn-envelope text-lightText text-2xl\"></i></a></ul></div></div></div></div><div class=\"px-0 sm:px-4 lg:px-0 mx-auto w-full lg:max-w-[1000px] flex-col flex items-center justify-center \"><div id=\"commentSection\" class=\" font-sans max-w-[1000px] mt-4 mb-10 px-4 sm:px-0 items-center rounded-xl w-full flex flex-col\"><div class=\"flex w-full flex-col xs:flex-row items-stretch justify-between gap-5 \"><a href=\"/subscribe-sqs-to-a-sns-topic-in-another-aws-account-with-cloudformation-and-gotchas-b80f229d32e4\" rel=\"external\" class=\"flex xs:w-1/2 flex-col group justify-between no-underline border border-lightBorder rounded-[5px] transition-all duration-300 hover:scale-[1.03]\"><div class=\"flex-grow p-3 text-lightText\"><span class=\"font-bold hover:text-lightTextStrong\">\u2190 Previous</span><p class=\"mt-2 font-light hover:underline\">Subscribe SQS to a SNS topic in another AWS account with CloudFormation, and gotchas!</p></div></a><a href=\"/lambda-optimization-tip-enable-http-keep-alive-6dc503f6f114\" rel=\"external\" class=\"flex w-full xs:w-1/2 flex-col group justify-between no-underline border border-lightBorder rounded-[5px] transition-all duration-300 hover:scale-[1.03]\"><div class=\"flex-grow p-3 \"><span class=\"font-bold hover:text-lightTextStrong\">Up Next \u2192</span><p class=\"mt-2 font-light hover:underline \">Lambda optimization tip\u200a\u2014\u200aenable HTTP keep-alive</p></div></a></div></div></div><div id=\"aboutCard\" class=\" max-w-[1000px] mx-auto flex flex-col items-center \"><div class=\"w-full lg:border border-lightBorder rounded-2xl\"><div class=\" w-full  px-4 py-3 sm:px-8 sm:py-6   \"><h3 class=\"text-xl xs:text-2xl sm:text-3xl font-bold mb-6\">About Author</h3><div class=\"flex flex-col items-start\"><div class=\"flex gap-2 flex-col xs:flex-row\"><div class=\"relative shadow-md mr-4 rounded-full min-w-[50px] w-[50px] h-[50px] sm:min-w-[75px] sm:h-[75px] ring-4 ring-gray-300\"><a href=\"/u/theburningmonk\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0\"><img alt=\"Yan Cui HackerNoon profile picture\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"fill\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover\"/><noscript><img alt=\"Yan Cui HackerNoon profile picture\" sizes=\"100vw\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"fill\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></a></div><div class=\"mr-4 flex flex-col gap-2 \"><div class=\"flex w-[200px] sm:w-auto flex-wrap gap-2 \"><div class=\"text-bodyTxtLight text-base \"><a class=\"flex flex-row flex-wrap gap-2\" href=\"/u/theburningmonk\"><strong class=\"font-bold text-base mr-2\">Yan Cui</strong><span class=\"break-words break-all\">@<!-- -->theburningmonk</span></a></div><div class=\"mb-2 sm:mb-0\"><div class=\"w-full flex justify-start\"><div class=\"w-full\"><form class=\"w-full flex flex-col items-start gap-2 \"><div class=\"flex w-full\"><input type=\"email\" class=\"flex-grow  border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2} \n                  }\" placeholder=\"name@company.com\" name=\"email\" required=\"\" value=\"\"/><button type=\"submit\" class=\"text-base} \n                bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText  px-2 py-1 rounded-r-md  font-bold\">Subscribe</button></div></form></div></div></div></div><p class=\"text-sm text-bodyTxtLight break-words overflow-wrap mb-4\">AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.</p></div></div><div class=\"flex-1 w-full\"><div class=\"flex flex-col flex-wrap gap-2 items-start justify-start mt-2 mb-2\"></div><div class=\"flex flex-col sm:flex-row gap-4 w-full\"><a class=\"text-base flex-1 px-4 py-2 font-bold rounded-lg border-2 border-lightBorder transition text-center w-full sm:w-auto bg-light hover:bg-lightAlt text-lightText hover:bg-bodyAccent hover:text-bodyAccentTxt  \" href=\"/u/theburningmonk\">Read my stories</a><a class=\"text-base break-words flex-1 break-all px-4 py-2 font-bold rounded-lg border-2 border-lightBorder transition text-center w-full sm:w-auto bg-light hover:bg-lightAlt text-lightText hover:bg-bodyAccent hover:text-bodyAccentTxt  \" href=\"/about/theburningmonk\">Learn More</a></div></div></div></div></div><span id=\"aboutCard\" class=\"hidden\"></span><div id=\"commentSection\" class=\" rounded-xl lg:border border-lightBorder w-full mt-10 flex flex-col \"><h4 class=\"text-xl xs:text-2xl sm:text-3xl font-bold px-4 py-4 \">Comments</h4><div class=\"m-4\"><div class=\"flex gap-2 flex-col sticky top-0 z-10\"><div class=\"new-comment-section flex items-center \"><div class=\"relative w-10 h-10 rounded-full overflow-hidden mr-2\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0\"><img alt=\"avatar\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"fill\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover\"/><noscript><img alt=\"avatar\" sizes=\"100vw\" srcSet=\"https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.com/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"fill\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover\" loading=\"lazy\"/></noscript></span></div><form class=\"flex-1 bg-light p-2 border-2 rounded-lg border-lightBorder\"><textarea aria-label=\"text-input\" placeholder=\"Share your thoughts...\" maxLength=\"1400\" rows=\"1\" class=\"bg-transparent text-lightText w-full outline-none focus:outline-none focus:ring-0 resize-none overflow-hidden\"></textarea></form></div></div><div class=\"editor_wrapper mt-2\"></div></div></div><section class=\"py-3 px-4 sm:px-0 sm:py-6 \"><h4 class=\"text-xl xs:text-2xl sm:text-3xl font-bold mb-4 sm:mb-6\">TOPICS</h4><div class=\"flex flex-wrap gap-2\"><a href=\"/c/cloud\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-lg border-lightBorder hover:bg-lightAccent hover:text-lightAccentText hover:border-lightAccentText bg-lightAlt text-lightText flex items-center px-2 py-1 border rounded\"><i class=\"hn hn-cloud mr-2\"></i><span>cloud</span></a><a href=\"/tagged/aws\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded\">#<!-- -->aws</a><a href=\"/tagged/aws-lambda\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded\">#<!-- -->aws-lambda</a><a href=\"/tagged/serverless\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded\">#<!-- -->serverless</a><a href=\"/tagged/cloud-computing\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded\">#<!-- -->cloud-computing</a><a href=\"/tagged/debugging-serverless\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded\">#<!-- -->debugging-serverless</a></div></section><section class=\"w-full\"><div class=\"py-3 w-full px-4 sm:px-0\"><h4 class=\"text-sm xs:text-xl sm:text-3xl   font-bold mb-4 sm:mb-6 flex justify-bwetween items-center w-full\">THIS ARTICLE WAS FEATURED IN</h4><div class=\"flex flex-wrap gap-2\"><a href=\"https://sia.hackernoon.com/debugging-serverless-applications-with-dashbird-82a2ed86d757\" target=\"_blank\" rel=\"nofollow\" class=\"text-sm sm:text-lg border-lightBorder bg-black text-white flex items-center px-2 py-1 border rounded\"><div class=\"w-[75px] text-center\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2727%27/%3e\"/></span><img alt=\"Sia\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Sia\" srcSet=\"https://hackernoon.imgix.net/images/sia.svg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/sia.svg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/sia.svg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span></div></a><a href=\"https://www.arweave.net/1-0SrkB2_rIKhi38f1xVrhCW6p7X7wlntN_7aremyhs\" target=\"_blank\" rel=\"nofollow\" class=\"text-sm sm:text-lg border-lightBorder hover:bg-lightAlt hover:text-lightText text-lightText flex items-center px-2 py-1 border rounded\"><div class=\"flex items-center\"><i class=\"hn hn-arweave text-lightText text-2xl\"></i><div style=\"margin-left:5px\">Arweave</div></div></a><a href=\"https://viewblock.io/arweave/tx/1-0SrkB2_rIKhi38f1xVrhCW6p7X7wlntN_7aremyhs\" target=\"_blank\" rel=\"nofollow\" class=\"text-sm sm:text-lg border-lightBorder hover:bg-lightAlt hover:text-lightText text-lightText flex items-center px-2 py-1 border rounded\"><div style=\"display:flex;align-items:center;justify-self:center\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2724%27%20height=%2724%27/%3e\"/></span><img alt=\"viewblock\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"viewblock\" srcSet=\"https://hackernoon.imgix.net/images/viewblock.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/viewblock.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/viewblock.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span><div style=\"margin-left:5px\">ViewBlock</div></div></a><a href=\"https://terminal.hackernoon.com/debugging-serverless-applications-with-dashbird-82a2ed86d757?ref=hackernoon\" target=\"_blank\" rel=\"nofollow\" class=\"text-sm sm:text-lg border-lightBorder hover:bg-lightAlt text-lightText flex items-center px-2 py-1 border rounded\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2722%27%20height=%2722%27/%3e\"/></span><img alt=\"Terminal\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Terminal\" srcSet=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/computer.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" loading=\"lazy\"/></noscript></span><span class=\"ml-2\">Terminal</span></a><a href=\"/lite/debugging-serverless-applications-with-dashbird-82a2ed86d757?ref=hackernoon\" target=\"_blank\" rel=\"nofollow\" class=\"text-sm sm:text-lg border-lightBorder hover:bg-lightAlt text-lightText flex items-center px-2 py-1 border rounded\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2722%27%20height=%2722%27/%3e\"/></span><img alt=\"Lite\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"mr-2\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Lite\" srcSet=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48 2x\" src=\"https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&amp;fit=max&amp;w=48\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"mr-2\" loading=\"lazy\"/></noscript></span><span class=\"ml-2\">Lite</span></a><a href=\"https://www.bitcoininsider.org/article/57408/debugging-serverless-applications-dashbird\" target=\"_blank\" rel=\"nofollow\" class=\"no-underline z-10 group\"><div class=\"flex items-center px-4 py-2 rounded font-bold shadow-sm transition-all text-sm  hover:bg-lightAlt  text-lightText border border-lightBorder \"><img src=\"https://t0.gstatic.com/faviconV2?client=SOCIAL&amp;type=FAVICON&amp;url=https://www.bitcoininsider.org/article/57408/debugging-serverless-applications-dashbird&amp;size=16\" width=\"20\" height=\"20\" class=\"mr-2 rounded\" alt=\"\"/><span class=\"text-sm sm:text-lg font-light\">Bitcoininsider</span></div></a></div></div></section><section class=\"sm:py-6 px-4 sm:px-0\"><h4 class=\"text-xl xs:text-2xl sm:text-3xl font-bold mb-6 uppercase flex justify-bwetween items-center w-full\">Related Stories</h4><div class=\"hidden sm:block\"><div><div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 3xl:grid-cols-3 3xl:gap-4  gap-4 \"><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/6-tips-to-scale-an-appsync-project-to-200-resolvers-that-will-blow-your-mind-7kx3tl8\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=640 640w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=750 750w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=828 828w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1080 1080w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1200 1200w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1920 1920w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=2048 2048w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/6-tips-to-scale-an-appsync-project-to-200-resolvers-that-will-blow-your-mind-7kx3tl8\">6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/theburningmonk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Yan Cui</a></p><p class=\" text-lightTextLight\">Sep 29, 2020<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/101-stories-to-learn-about-cloud-infrastructure\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"101 Stories To Learn About Cloud Infrastructure\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"101 Stories To Learn About Cloud Infrastructure\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/cloud-infrastructure\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->CLOUD-INFRASTRUCTURE</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/101-stories-to-learn-about-cloud-infrastructure\">101 Stories To Learn About Cloud Infrastructure</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"HackerNoon Learn\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"HackerNoon Learn\" srcSet=\"https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/learn\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">HackerNoon Learn</a></p><p class=\" text-lightTextLight\">Apr 13, 2023<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-things-in-engineering-we-dont-spend-enough-time-on\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Things in Engineering We Don&#x27;t Spend Enough Time On\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Things in Engineering We Don&#x27;t Spend Enough Time On\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/software-engineering\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->SOFTWARE-ENGINEERING</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-things-in-engineering-we-dont-spend-enough-time-on\">10 Things in Engineering We Don&#x27;t Spend Enough Time On</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Taavi Rehem\u00e4gi\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Taavi Rehem\u00e4gi\" srcSet=\"https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/taavi-rehemagi\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Taavi Rehem\u00e4gi</a></p><p class=\" text-lightTextLight\">Aug 25, 2021<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-things-i-did-to-increase-cloudtrail-logs-security-it2c3510\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Things I Did To Increase CloudTrail Logs Security\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Things I Did To Increase CloudTrail Logs Security\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws-cloudtrail\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS-CLOUDTRAIL</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-things-i-did-to-increase-cloudtrail-logs-security-it2c3510\">10 Things I Did To Increase CloudTrail Logs Security</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Leandro Mantovani\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Leandro Mantovani\" srcSet=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/mantux\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Leandro Mantovani</a></p><p class=\" text-lightTextLight\">Jun 01, 2021<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 reasons to give cloud computing a go\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 reasons to give cloud computing a go\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/cloud-computing\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->CLOUD-COMPUTING</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\">10 reasons to give cloud computing a go</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Vladimir Fedak\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Vladimir Fedak\" srcSet=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/FedakV\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Vladimir Fedak</a></p><p class=\" text-lightTextLight\">May 17, 2018<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-lessons-from-10-years-of-aws-part-1-258b56703fcf\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Lessons from 10 Years of AWS (part 1)\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Lessons from 10 Years of AWS (part 1)\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-lessons-from-10-years-of-aws-part-1-258b56703fcf\">10 Lessons from 10 Years of AWS (part 1)</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Adrian Hornsby\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Adrian Hornsby\" srcSet=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/adhorn\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Adrian Hornsby</a></p><p class=\" text-lightTextLight\">Dec 02, 2017<!-- --> </p></div></div></div></article></div></div></div></div><div class=\"sm:hidden\"><div><div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 3xl:grid-cols-3 3xl:gap-4  gap-4 \"><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/6-tips-to-scale-an-appsync-project-to-200-resolvers-that-will-blow-your-mind-7kx3tl8\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=640 640w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=750 750w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=828 828w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1080 1080w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1200 1200w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=1920 1920w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=2048 2048w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media&amp;token=59acb979-66a8-4a0c-8d79-d7f8b479f130&amp;auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/6-tips-to-scale-an-appsync-project-to-200-resolvers-that-will-blow-your-mind-7kx3tl8\">6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Yan Cui\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Yan Cui\" srcSet=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/theburningmonk\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Yan Cui</a></p><p class=\" text-lightTextLight\">Sep 29, 2020<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/101-stories-to-learn-about-cloud-infrastructure\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"101 Stories To Learn About Cloud Infrastructure\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"101 Stories To Learn About Cloud Infrastructure\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/github/cloud-infrastructure-200.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/cloud-infrastructure\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->CLOUD-INFRASTRUCTURE</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/101-stories-to-learn-about-cloud-infrastructure\">101 Stories To Learn About Cloud Infrastructure</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"HackerNoon Learn\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"HackerNoon Learn\" srcSet=\"https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/learn\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">HackerNoon Learn</a></p><p class=\" text-lightTextLight\">Apr 13, 2023<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-things-in-engineering-we-dont-spend-enough-time-on\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Things in Engineering We Don&#x27;t Spend Enough Time On\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Things in Engineering We Don&#x27;t Spend Enough Time On\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/software-engineering\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->SOFTWARE-ENGINEERING</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-things-in-engineering-we-dont-spend-enough-time-on\">10 Things in Engineering We Don&#x27;t Spend Enough Time On</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Taavi Rehem\u00e4gi\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Taavi Rehem\u00e4gi\" srcSet=\"https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/taavi-rehemagi\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Taavi Rehem\u00e4gi</a></p><p class=\" text-lightTextLight\">Aug 25, 2021<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-things-i-did-to-increase-cloudtrail-logs-security-it2c3510\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Things I Did To Increase CloudTrail Logs Security\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Things I Did To Increase CloudTrail Logs Security\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws-cloudtrail\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS-CLOUDTRAIL</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-things-i-did-to-increase-cloudtrail-logs-security-it2c3510\">10 Things I Did To Increase CloudTrail Logs Security</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Leandro Mantovani\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Leandro Mantovani\" srcSet=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/mantux\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Leandro Mantovani</a></p><p class=\" text-lightTextLight\">Jun 01, 2021<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 reasons to give cloud computing a go\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 reasons to give cloud computing a go\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/fallback-feat.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/cloud-computing\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->CLOUD-COMPUTING</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\">10 reasons to give cloud computing a go</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Vladimir Fedak\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Vladimir Fedak\" srcSet=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/FedakV\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Vladimir Fedak</a></p><p class=\" text-lightTextLight\">May 17, 2018<!-- --> </p></div></div></div></article></div><div class=\" border  xs:my-3 sm:m-0 border-lightBorder rounded-md \"><article class=\"relative group  w-full  h-full flex flex-col rounded-lg undefined text-darkText p-0\"><div class=\"relative overflow-hidden w-full rounded-t-lg\"><a href=\"/10-lessons-from-10-years-of-aws-part-1-258b56703fcf\"><span style=\"box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:50%\"></span><img alt=\"10 Lessons from 10 Years of AWS (part 1)\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"responsive\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;background-size:cover;background-position:0% 0%;filter:blur(20px);background-image:url(&quot;/placeholder.jpg&quot;)\"/><noscript><img alt=\"10 Lessons from 10 Years of AWS (part 1)\" sizes=\"(max-width: 768px) 100vw, 400px\" srcSet=\"https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=640 640w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=750 750w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=828 828w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1080 1080w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1200 1200w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=1920 1920w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=2048 2048w, https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=3840 3840w\" src=\"https://hackernoon.imgix.net/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png?auto=format&amp;fit=max&amp;w=3840\" decoding=\"async\" data-nimg=\"responsive\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"w-full h-full object-cover transition-transform duration-200 hover:scale-105 \" loading=\"lazy\"/></noscript></span></a><div class=\"absolute bottom-2 right-2 z-[2] flex items-center justify-end rounded max-w-[60%] lg:max-w-[65%]\"><a href=\"/tagged/aws\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-sm font-bold px-2 rounded break-words text-darkAccentText bg-darkAccent border border-darkBorder\">#<!-- -->AWS</a></div></div><div class=\"flex flex-col text-xl p-2 justify-between flex-1 bg-light rounded-b-lg border-t border-lightBorder\"><h2 class=\"font-bold text-lg text-lightText text-base xs:text-lg sm:text-xs md:text-sm lg:text-base line-clamp-3 \"><a class=\"hover:underline\" href=\"/10-lessons-from-10-years-of-aws-part-1-258b56703fcf\">10 Lessons from 10 Years of AWS (part 1)</a></h2><div class=\"flex items-center space-x-2 mt-1\"><div class=\"sm:hidden md:block\"><div class=\"sc-b25c0d3d-0 bXsBAm border-2 border-lightSubtle \" width=\"40\" height=\"40\"><span style=\"box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%\"><span style=\"box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%\"><img style=\"display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0\" alt=\"\" aria-hidden=\"true\" src=\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2740%27%20height=%2740%27/%3e\"/></span><img alt=\"Adrian Hornsby\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" decoding=\"async\" data-nimg=\"intrinsic\" class=\"rounded-full\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\"/><noscript><img alt=\"Adrian Hornsby\" srcSet=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=48 1x, https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96 2x\" src=\"https://hackernoon.imgix.net/fallback-profile.png?auto=format&amp;fit=max&amp;w=96\" decoding=\"async\" data-nimg=\"intrinsic\" style=\"position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%\" class=\"rounded-full\" loading=\"lazy\"/></noscript></span></div></div><div class=\"text-xs \"><p class=\" text-lightText font-bold flex flex-wrap\"><a href=\"/u/adhorn\" target=\"_blank\" rel=\"noopener noreferrer\" class=\" hover:underline\">Adrian Hornsby</a></p><p class=\" text-lightTextLight\">Dec 02, 2017<!-- --> </p></div></div></div></article></div></div></div></div></section></div></div></div></div></div><div class=\"min-h-[200px]\"></div></main><div class=\"flex flex-col gap-4 hidden\"><button class=\"mr-auto\"><i class=\"hn-sun hn text-2xl\"></i></button><h2 class=\"text-sm font-semibold text-darkText\">Light-Mode</h2><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">Classic</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#0f0\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#212428\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#F5EC43\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#fff\"></span></div></div><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">Newspaper</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#fff\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#636363\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#909090\"></span></div></div><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">Minty</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#63ff86\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#2AAA74\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#1D6A56\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#212428\"></span></div></div><h2 class=\"text-sm font-semibold text-darkText\">Dark-Mode</h2><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">Neon Noir</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#1e1e1e\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#0f0\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#F5EC43\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#212428\"></span></div></div><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">Minty</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#63ff86\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#2AAA74\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#1D6A56\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#212428\"></span></div></div><div class=\"cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform \"><h3 class=\"text-sm uppercase mb-2 \">HN StartUps</h3><div class=\"flex space-x-1\"><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#08085E\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#A2EF44\"></span><span class=\"w-6 h-6 rounded border border-darkBorder\" style=\"background-color:#F5EC43\"></span></div></div></div></div></div><script data-cfasync=\"false\" src=\"/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"data\":{\"pageLang\":\"en\",\"datePublished\":\"2019-01-29\",\"slug\":\"debugging-serverless-applications-with-dashbird-82a2ed86d757\",\"articleBody\":\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex. In this post, let\u2019s take a serverless application and see how can help you debug the application. Dashbird Challenges with serverless observability When it comes to observability, serverless has introduced some interesting challenges. For so long, we have relied on the use of agents and daemons to collect metrics and logs. They run silently in the background, away from our critical paths where we are concerned with minimizing user-facing latencies. They collect, buffer and publish these observability data in batches to improve efficiency. As a practice, they are so deeply ingrained into how we monitor our applications, until now. When it comes to serverless, specifically with managed platforms such as AWS Lambda, there\u2019s simply nowhere for us to install these agents! To collect metrics and logs as part of your function\u2019s invocation would understandably add overhead to its invocation time. Since AWS is collecting logs from your function asynchronously already, and publishing them to CloudWatch Logs. A common workaround is to subscribe to these logs and perform post-processing on them. Indeed, that is how Dashbird collects data about your function\u2019s execution. It subscribes the CloudWatch Logs log groups to a Kinesis stream and then processes the events from there. You can read about the advantages of this approach in . this article As our serverless applications become more complex, it\u2019s important for us to be able to trace executions across multiple functions. As the demo app demonstrates, even a simple user transaction can span across multiple event sources as well as Lambda functions. The demo\u00a0app Imagine you\u2019re building a Twitter clone. One of the core features of the system is to distribute a user\u2019s post to his followers\u2019 feeds. To implement this feature, imagine we have two separate API endpoints: POST posts/create\u00a0: to create a new post for the current user GET followers/{userId}\u00a0: to fetch a user\u2019s followers Each endpoint is handled by a separate Lambda function\u200a\u2014 and respectively. create-post get-followers When a user publishes a new post, the function would save the post in the DynamoDB table and also publish a event into a Kinesis stream. This event then triggers a function. This function would query the endpoint and then add the post to the followers\u2019 feeds. The function would query the DynamoDB table to return the IDs of the user\u2019s followers. create-post posts post-created distribute-post GET followers/{userId} get-followers followers For brevity sake I have omitted the logic for actually distributing the posts. So the overall architecture for our demo app looks like the following. To make things more interesting, each of the Lambda functions are hardwired to error or timeout based on a configurable probability. The source code for the demo app is , so feel free to try it out yourself. available on Github Introducing Dashbird Even with a simple serverless application like the one outlined above, we have quite a few functions to look after. Let\u2019s see how we can use Dashbird to help us monitor this application and debug issues. As soon as I log in, I have a high level dashboard for my account. In addition to the data I get in the AWS Lambda console (see below), the Dashbird dashboard has two useful data points: Average memory utilization for the functions Cost for the Lambda invocations Next, in Dashbird\u2019s Lambda console, I can see a high level summary of my functions and their activities over the last 24 hours. What I find very useful here is the fact that it highlights functions that have been idle for 10 days as inactive. As your serverless architecture expands and you end up with hundreds of functions, maintained by different teams, it\u2019s very difficult to track which functions are no longer needed. Having redundant functions lying around is a security risk as they remain an attack surface that can be exploited. While this view alone cannot tell you definitively which functions are no longer used. Many functions are not run on a regular basis. Maybe they are part of a cron job that only runs once a month. Or maybe they are only used during disaster recovery scenarios. Nonetheless, being aware of which functions are inactive encourages teams to ask the question \u201cIs this function still needed?\u201d. From here, maybe better practices can emerge. For example, use tags to mark functions that are expected to be used sparingly so they are not flagged by these checks. If I navigate to one of the functions, then I have a function-centric view of invocation time, error, cost and memory utilization. In addition, I can also see a list of the recent invocations. What\u2019s really useful here is that cold starts and retries are clearly labelled. When debugging live issues this lets me quickly narrow down the invocations that I need to pay attention to. Straight away, I can see that 3 of the invocations timed out after 6 seconds. What\u2019s more, the original Kinesis event was retried 3 times and finally succeeded on the third retry. If I click on the \u201c+\u201d button next to an invocation then I can drill down to the invocation itself. Here I can see the logs and X-Ray trace for this invocation in one screen. This is great as it saves me from having to constantly jump between different AWS console. Debugging with\u00a0Dashbird As mentioned before, the demo app is hardwired to error and timeout. And sure enough, when these failure cases happen, Dashbird\u2019s built-in alerting kicks in and I promptly received emails notifying me that something went wrong. While this built-in alerting is great, I couldn\u2019t see any settings to adjust the alert sensitivity. As I followed the links in the emails, to the function, then the failed invocation. Dashbird neatly groups the related invocations\u200a\u2014\u200athe initial timeout, and the subsequent retries\u200a\u2014\u200atogether. I can quickly see that the failed Kinesis event was successfully processed on the 3rd retry. Dashbird also tracks the open issues in the Errors console. Now that I know the problem has resolved itself I can go ahead and resolve the error. Tailing function\u00a0logs Another nice feature of Dashbird is that it\u2019s able to tail the logs for multiple functions at the same time. For the demo app, I want to see the logs for both the and functions as I curl the endpoint. create-post distribute-post POST posts/create That way, I can see that the event was successfully published into the Kinesis stream, and was subsequently received by the function. distribute-post Conclusion Overall I was impressed with what Dashbird has to offer, and it\u2019s clear that a lot of thought has gone into the product. It has many nice touches that makes debugging much easier. For example, grouping retries together, and integrating X-Ray traces and logs in one screen. These might seem like trivial niceties, but they can make a big difference under the high-pressure scenarios of dealing with a live issue. From what I have been able to see, I think Dashbird is a really great tool. The main thing missing for me is the ability to trace executions end-to-end. Personally, I\u2019d really like to see the entire execution traced from the API call to create a post, all the way to the function performing a Query against the DynamoDB table. get-followers followers If you\u2019re solely relying on the built-in AWS tools (CloudWatch, CloudWatch Logs, and X-Ray) then you should give Dashbird a try. Why not sign up for a free trial, and deploy the demo app to your environment so you can see how Dashbird can help you debug your serverless application? Originally published at dashbird.io on January 25, 2019.\",\"arweave\":\"1-0SrkB2_rIKhi38f1xVrhCW6p7X7wlntN_7aremyhs\",\"createdAt\":\"2019-01-29T11:43:01.367Z\",\"excerpt\":\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\",\"featureImgColor\":\"rgb(49 64 77 / 70%)\",\"firstSeenAt\":false,\"id\":\"debugging-serverless-applications-with-dashbird-82a2ed86d757\",\"imageSizes\":{\"https://hackernoon.com/hn-images/0*z21gtl_jfN-kE-nn.png\":{\"width\":1600,\"height\":850},\"https://hackernoon.com/hn-images/0*OKovmxFYKL4pGPmG.png\":{\"width\":1600,\"height\":907},\"https://hackernoon.com/hn-images/0*8_jid1Y_sG_cbTJn.png\":{\"width\":1600,\"height\":872},\"https://hackernoon.com/hn-images/0*nq_eP-14T_YcL3ps.png\":{\"width\":1600,\"height\":907},\"https://hackernoon.com/hn-images/0*3wx05u1keXGMJAij.png\":{\"width\":1600,\"height\":910},\"https://hackernoon.com/hn-images/0*-RRtkvYI3B7LvFeT.png\":{\"width\":1600,\"height\":871},\"https://hackernoon.com/hn-images/0*CsuMFbXUfo4gUeLy.png\":{\"width\":1600,\"height\":507},\"https://hackernoon.com/hn-images/0*P8P9xvKvn_-IdQzv.png\":{\"width\":1514,\"height\":928},\"https://hackernoon.com/hn-images/0*NoHAE22yc7RxaT9V.png\":{\"width\":902,\"height\":561},\"https://hackernoon.com/hn-images/0*TDIcxxsnG-n_eap0.png\":{\"width\":1304,\"height\":1222},\"https://hackernoon.com/hn-images/0*9-VOw-xsrF3mB5nQ.png\":{\"width\":1600,\"height\":995},\"https://hackernoon.com/hn-images/0*unPiVL0E6QC057iS.png\":{\"width\":1286,\"height\":1182},\"https://hackernoon.com/hn-images/0*Tjx1XgwC9lZZgtCP.png\":{\"width\":1574,\"height\":966},\"https://hackernoon.com/hn-images/0*J7SEZ_EK1aWK6o3A.png\":{\"width\":1600,\"height\":701}},\"mainImage\":\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png\",\"mainImageHeight\":655,\"mainImageWidth\":1600,\"mentions\":[{\"image\":null,\"name\":\"Fetch\",\"id\":\"fetch\",\"collection\":\"companies\",\"manual\":false},{\"image\":null,\"name\":\"Trace\",\"collection\":\"companies\",\"id\":\"trace\",\"manual\":false},{\"image\":\"http://logo.bigpicture.io/logo/twitter.com\",\"name\":\"Twitter\",\"collection\":\"companies\",\"id\":\"twitter\",\"manual\":false}],\"owner\":\"YjziSuGeDecNvCZR0j4bivrb6V13\",\"parentCategory\":\"cloud\",\"parsed\":\"\\u003cp\\u003eWith AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\\u003c/p\\u003e\\n\\u003cp\\u003eIn this post, let\u2019s take a serverless application and see how \\u003ca href=\\\"https://dashbird.io/\\\"\\u003eDashbird\\u003c/a\\u003e can help you debug the application.\\u003c/p\\u003e\\n\\u003ch3\\u003eChallenges with serverless observability\\u003c/h3\\u003e\\n\\u003cp\\u003eWhen it comes to observability, serverless has introduced some interesting challenges. For so long, we have relied on the use of agents and daemons to collect metrics and logs. They run silently in the background, away from our critical paths where we are concerned with minimizing user-facing latencies. They collect, buffer and publish these observability data in batches to improve efficiency. As a practice, they are so deeply ingrained into how we monitor our applications, until now.\\u003c/p\\u003e\\n\\u003cp\\u003eWhen it comes to serverless, specifically with managed platforms such as AWS Lambda, there\u2019s simply nowhere for us to install these agents!\\u003c/p\\u003e\\n\\u003cp\\u003eTo collect metrics and logs as part of your function\u2019s invocation would understandably add overhead to its invocation time. Since AWS is collecting logs from your function asynchronously already, and publishing them to CloudWatch Logs. A common workaround is to subscribe to these logs and perform post-processing on them.\\u003c/p\\u003e\\n\\u003cp\\u003eIndeed, that is how Dashbird collects data about your function\u2019s execution. It subscribes the CloudWatch Logs log groups to a Kinesis stream and then processes the events from there. You can read about the advantages of this approach in \\u003ca href=\\\"https://theburningmonk.com/2018/07/centralised-logging-for-aws-lambda-revised-2018/\\\"\\u003ethis article\\u003c/a\\u003e.\\u003c/p\\u003e\\n\\u003cp\\u003eAs our serverless applications become more complex, it\u2019s important for us to be able to trace executions across multiple functions. As the demo app demonstrates, even a simple user transaction can span across multiple event sources as well as Lambda functions.\\u003c/p\\u003e\\n\\u003ch3\\u003eThe demo\u00a0app\\u003c/h3\\u003e\\n\\u003cp\\u003eImagine you\u2019re building a Twitter clone. One of the core features of the system is to distribute a user\u2019s post to his followers\u2019 feeds. To implement this feature, imagine we have two separate API endpoints:\\u003c/p\\u003e\\n\\u003cul\\u003e\\n\\u003cli\\u003ePOST posts/create\u00a0: to create a new post for the current user\\u003c/li\\u003e\\n\\u003cli\\u003eGET followers/{userId}\u00a0: to fetch a user\u2019s followers\\u003c/li\\u003e\\n\\u003c/ul\\u003e\\n\\u003cp\\u003eEach endpoint is handled by a separate Lambda function\u200a\u2014\u200a\\u003cstrong\\u003e\\u003cem\\u003ecreate-post\\u003c/em\\u003e\\u003c/strong\\u003e and \\u003cstrong\\u003e\\u003cem\\u003eget-followers\\u003c/em\\u003e\\u003c/strong\\u003e respectively.\\u003c/p\\u003e\\n\\u003cp\\u003eWhen a user publishes a new post, the \\u003cstrong\\u003e\\u003cem\\u003ecreate-post\\u003c/em\\u003e\\u003c/strong\\u003e function would save the post in the \\u003cstrong\\u003e\\u003cem\\u003eposts\\u003c/em\\u003e\\u003c/strong\\u003e DynamoDB table and also publish a \\u003cstrong\\u003e\\u003cem\\u003epost-created\\u003c/em\\u003e\\u003c/strong\\u003e event into a Kinesis stream. This event then triggers a \\u003cstrong\\u003e\\u003cem\\u003edistribute-post\\u003c/em\\u003e\\u003c/strong\\u003e function. This function would query the \\u003cem\\u003eGET followers/{userId}\\u003c/em\\u003e endpoint and then add the post to the followers\u2019 feeds. The \\u003cstrong\\u003e\\u003cem\\u003eget-followers\\u003c/em\\u003e\\u003c/strong\\u003e function would query the \\u003cstrong\\u003e\\u003cem\\u003efollowers\\u003c/em\\u003e\\u003c/strong\\u003e DynamoDB table to return the IDs of the user\u2019s followers.\\u003c/p\\u003e\\n\\u003cp\\u003eFor brevity sake I have omitted the logic for actually distributing the posts. So the overall architecture for our demo app looks like the following.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*NoHAE22yc7RxaT9V.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eTo make things more interesting, each of the Lambda functions are hardwired to error or timeout based on a configurable probability. The source code for the demo app is \\u003ca href=\\\"https://github.com/theburningmonk/dashbird-demo\\\"\\u003eavailable on Github\\u003c/a\\u003e, so feel free to try it out yourself.\\u003c/p\\u003e\\n\\u003ch3\\u003eIntroducing Dashbird\\u003c/h3\\u003e\\n\\u003cp\\u003eEven with a simple serverless application like the one outlined above, we have quite a few functions to look after. Let\u2019s see how we can use Dashbird to help us monitor this application and debug issues.\\u003c/p\\u003e\\n\\u003cp\\u003eAs soon as I log in, I have a high level dashboard for my account.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*3wx05u1keXGMJAij.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eIn addition to the data I get in the AWS Lambda console (see below), the Dashbird dashboard has two useful data points:\\u003c/p\\u003e\\n\\u003cul\\u003e\\n\\u003cli\\u003eAverage memory utilization for the functions\\u003c/li\\u003e\\n\\u003cli\\u003eCost for the Lambda invocations\\u003c/li\\u003e\\n\\u003c/ul\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*-RRtkvYI3B7LvFeT.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eNext, in Dashbird\u2019s Lambda console, I can see a high level summary of my functions and their activities over the last 24 hours.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*z21gtl_jfN-kE-nn.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eWhat I find very useful here is the fact that it highlights functions that have been idle for 10 days as inactive. As your serverless architecture expands and you end up with hundreds of functions, maintained by different teams, it\u2019s very difficult to track which functions are no longer needed. Having redundant functions lying around is a security risk as they remain an attack surface that can be exploited.\\u003c/p\\u003e\\n\\u003cp\\u003eWhile this view alone cannot tell you definitively which functions are no longer used. Many functions are not run on a regular basis. Maybe they are part of a cron job that only runs once a month. Or maybe they are only used during disaster recovery scenarios. Nonetheless, being aware of which functions are inactive encourages teams to ask the question \u201cIs this function still needed?\u201d. From here, maybe better practices can emerge. For example, use tags to mark functions that are expected to be used sparingly so they are not flagged by these checks.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*CsuMFbXUfo4gUeLy.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eIf I navigate to one of the functions, then I have a function-centric view of invocation time, error, cost and memory utilization. In addition, I can also see a list of the recent invocations. What\u2019s really useful here is that cold starts and retries are clearly labelled. When debugging live issues this lets me quickly narrow down the invocations that I need to pay attention to.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*8_jid1Y_sG_cbTJn.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eStraight away, I can see that 3 of the invocations timed out after 6 seconds. What\u2019s more, the original Kinesis event was retried 3 times and finally succeeded on the third retry.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*J7SEZ_EK1aWK6o3A.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eIf I click on the \u201c+\u201d button next to an invocation then I can drill down to the invocation itself. Here I can see the logs and X-Ray trace for this invocation in one screen. This is great as it saves me from having to constantly jump between different AWS console.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*9-VOw-xsrF3mB5nQ.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003ch3\\u003eDebugging with\u00a0Dashbird\\u003c/h3\\u003e\\n\\u003cp\\u003eAs mentioned before, the demo app is hardwired to error and timeout. And sure enough, when these failure cases happen, Dashbird\u2019s built-in alerting kicks in and I promptly received emails notifying me that something went wrong.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*TDIcxxsnG-n_eap0.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*unPiVL0E6QC057iS.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eWhile this built-in alerting is great, I couldn\u2019t see any settings to adjust the alert sensitivity.\\u003c/p\\u003e\\n\\u003cp\\u003eAs I followed the links in the emails, to the function, then the failed invocation. Dashbird neatly groups the related invocations\u200a\u2014\u200athe initial timeout, and the subsequent retries\u200a\u2014\u200atogether. I can quickly see that the failed Kinesis event was successfully processed on the 3rd retry.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*P8P9xvKvn_-IdQzv.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eDashbird also tracks the open issues in the Errors console. Now that I know the problem has resolved itself I can go ahead and resolve the error.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*OKovmxFYKL4pGPmG.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003ch3\\u003eTailing function\u00a0logs\\u003c/h3\\u003e\\n\\u003cp\\u003eAnother nice feature of Dashbird is that it\u2019s able to tail the logs for multiple functions at the same time. For the demo app, I want to see the logs for both the \\u003cem\\u003ecreate-post\\u003c/em\\u003e and \\u003cem\\u003edistribute-post\\u003c/em\\u003e functions as I curl the \\u003cem\\u003ePOST posts/create\\u003c/em\\u003e endpoint.\\u003c/p\\u003e\\n\\u003cp\\u003eThat way, I can see that the event was successfully published into the Kinesis stream, and was subsequently received by the \\u003cem\\u003edistribute-post\\u003c/em\\u003e function.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*nq_eP-14T_YcL3ps.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003ch3\\u003eConclusion\\u003c/h3\\u003e\\n\\u003cp\\u003eOverall I was impressed with what Dashbird has to offer, and it\u2019s clear that a lot of thought has gone into the product. It has many nice touches that makes debugging much easier. For example, grouping retries together, and integrating X-Ray traces and logs in one screen. These might seem like trivial niceties, but they can make a big difference under the high-pressure scenarios of dealing with a live issue.\\u003c/p\\u003e\\n\\u003cp\\u003eFrom what I have been able to see, I think Dashbird is a really great tool. The main thing missing for me is the ability to trace executions end-to-end. Personally, I\u2019d really like to see the entire execution traced from the API call to create a post, all the way to the \\u003cstrong\\u003e\\u003cem\\u003eget-followers\\u003c/em\\u003e\\u003c/strong\\u003e function performing a Query against the \\u003cstrong\\u003e\\u003cem\\u003efollowers\\u003c/em\\u003e\\u003c/strong\\u003e DynamoDB table.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https://hackernoon.com/hn-images/0*Tjx1XgwC9lZZgtCP.png\\\" alt=\\\"\\\"\\u003e\\u003c/p\\u003e\\n\\u003cp\\u003eIf you\u2019re solely relying on the built-in AWS tools (CloudWatch, CloudWatch Logs, and X-Ray) then you should give Dashbird a try. Why not sign up for a free trial, and deploy the demo app to your environment so you can see how Dashbird can help you debug your serverless application?\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cem\\u003eOriginally published at\\u003c/em\\u003e \\u003ca href=\\\"https://dashbird.io/blog/debugging-serverless-apps-with-dashbird/\\\"\\u003e\\u003cem\\u003edashbird.io\\u003c/em\\u003e\\u003c/a\\u003e \\u003cem\\u003eon January 25, 2019.\\u003c/em\\u003e\\u003c/p\\u003e\",\"profile\":{\"about_page_settings\":{},\"adLink\":\"https://theburningmonk.com/hire-me/\",\"adText\":\"Ask me for help about serverless\",\"avatar\":\"https://hackernoon.com/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg\",\"bio\":\"AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.\",\"callToActions\":[{\"active\":true,\"icon\":\"far fa-smile\",\"id\":\"98d3912fa2ee6-brand\",\"name\":\"Ask me for help about serverless\",\"url\":\"https://theburningmonk.com/hire-me/\"},{\"active\":true,\"icon\":\"fa fa-book\",\"id\":\"e11673721d0c1\",\"name\":\"Read My Stories\",\"url\":\"https://hackernoon.com/u/theburningmonk\"},{\"active\":true,\"icon\":\"far fa-smile\",\"id\":\"2c5ef23d3285d-brand\",\"name\":\"Ask me for help about serverless\",\"url\":\"https://theburningmonk.com/hire-me/\"}],\"displayName\":\"Yan Cui\",\"handle\":\"theburningmonk\",\"isBrand\":false,\"isTrusted\":false,\"allowSubscribers\":true},\"publishedAt\":1548762181.367,\"tags\":[\"aws\",\"aws-lambda\",\"serverless\",\"cloud-computing\",\"debugging-serverless\"],\"title\":\"Debugging Serverless Applications with Dashbird\",\"backlinks\":{\"fetched\":\"2025-05-05T17:05:12.031Z\",\"urls\":[\"https://www.bitcoininsider.org/article/57408/debugging-serverless-applications-dashbird\"]},\"draftId\":\"debugging-serverless-applications-with-dashbird-82a2ed86d757\",\"tldr\":\"With AWS Lambda, we get scalability and resilience out-of-the-box. What\u2019s more, AWS also provides built-in monitoring, logging and tracing support through CloudWatch and X-Ray. These built-in tools provide a good starting point but many developers eventually outgrow them as their serverless application becomes more complex.\",\"annotations\":[],\"coAuthorProfiles\":[],\"commentsCount\":0,\"fromMongo\":true,\"relatedStories\":[{\"id\":\"n7KUa0XXK3HnAjuLPwok\",\"title\":\"6 Tips To Scale an AppSync Project To 200+ Resolvers That Will Blow Your Mind\",\"slug\":\"6-tips-to-scale-an-appsync-project-to-200-resolvers-that-will-blow-your-mind-7kx3tl8\",\"mainImage\":\"https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FYjziSuGeDecNvCZR0j4bivrb6V13-dpc83t7w.jpeg?alt=media\\u0026token=59acb979-66a8-4a0c-8d79-d7f8b479f130\",\"tags\":[\"aws\",\"aws-lambda\",\"graphql\",\"cloud\",\"cloud-computing\",\"appsync\",\"hackernoon-top-story\",\"devops\"],\"profile\":{\"about_page_settings\":{},\"adLink\":\"https://theburningmonk.com/hire-me/\",\"adText\":\"Ask me for help about serverless\",\"avatar\":\"https://hackernoon.com/images/avatars/YjziSuGeDecNvCZR0j4bivrb6V13.jpg\",\"bio\":\"AWS Serverless Hero. Independent Consultant. Developer Advocate at Lumigo.\",\"callToActions\":[{\"active\":true,\"icon\":\"far fa-smile\",\"id\":\"98d3912fa2ee6-brand\",\"name\":\"Ask me for help about serverless\",\"url\":\"https://theburningmonk.com/hire-me/\"},{\"active\":true,\"icon\":\"fa fa-book\",\"id\":\"e11673721d0c1\",\"name\":\"Read My Stories\",\"url\":\"https://hackernoon.com/u/theburningmonk\"},{\"active\":true,\"icon\":\"far fa-smile\",\"id\":\"2c5ef23d3285d-brand\",\"name\":\"Ask me for help about serverless\",\"url\":\"https://theburningmonk.com/hire-me/\"}],\"displayName\":\"Yan Cui\",\"handle\":\"theburningmonk\",\"isBrand\":false,\"isTrusted\":false,\"allowSubscribers\":true},\"fromSlack\":false,\"publishedAt\":\"2020-09-29T12:30:04.489Z\"},{\"id\":\"101-stories-to-learn-about-cloud-infrastructure\",\"title\":\"101 Stories To Learn About Cloud Infrastructure\",\"slug\":\"101-stories-to-learn-about-cloud-infrastructure\",\"mainImage\":\"https://cdn.hackernoon.com/images/github/cloud-infrastructure-200.png\",\"tags\":[\"cloud-infrastructure\",\"learn\",\"learn-cloud-infrastructure\",\"cloud-computing\",\"cloud\",\"aws\",\"kubernetes\",\"devops\"],\"profile\":{\"displayName\":\"HackerNoon Learn\",\"callToActions\":[{\"name\":\"Star it GitHub.com/HackerNoon/Learn \",\"icon\":\"\",\"active\":true,\"id\":\"0a8789708671a-brand\",\"url\":\"https://github.com/hackernoon/learn\"},{\"icon\":\"fa fa-book\",\"name\":\"Read My Stories\",\"active\":true,\"id\":\"26e1cfa01d773\",\"url\":\"https://hackernoon.com/u/learn\"}],\"cms\":{\"color\":\"#00ff00\",\"paying\":true,\"domainSet\":true,\"ctas\":[]},\"bio\":\"Lets geek out. The HackerNoon library is now ranked by reading time created. Start learning by what others read most.\",\"handle\":\"learn\",\"medium\":\"\",\"avatar\":\"https://cdn.hackernoon.com/images/zhLunuihpBhk4IjuH4amrounSwE2-asb3p1y.gif.webp\",\"socialMedia\":{\"youtube\":\"hackernoon\",\"github\":\"hackernoon/learn\",\"twitter\":\"hackernoon\",\"facebook\":\"hackernoon\",\"instagram\":\"hackernoon\"},\"interested_tags\":[\"agile-development\",\"learn\",\"learn-agile-development\",\"agile\",\"agile-development-stories\",\"learn-agile\",\"product-management\",\"tech-listicle\"],\"avatarNFT\":false,\"domain\":\"www.learnrepo.com\",\"about_page_settings\":{},\"long_bio\":\"\",\"superpeerLink\":\"\",\"isTrusted\":true},\"fromSlack\":false,\"publishedAt\":\"2023-04-13T14:00:13.147Z\"},{\"id\":\"3PKEWEjeCjxWYiqRnqju\",\"title\":\"10 Things in Engineering We Don't Spend Enough Time On\",\"slug\":\"10-things-in-engineering-we-dont-spend-enough-time-on\",\"mainImage\":\"https://cdn.hackernoon.com/images/JT4BgXlfxveziEP9szyBKsEXoFf2-1h3b35zw.jpeg\",\"tags\":[\"software-engineering\",\"software-development\",\"serverless\",\"aws\",\"aws-lambda\",\"devops\",\"sre\",\"cloud-computing\"],\"profile\":{\"github\":null,\"displayName\":\"Taavi Rehem\u00e4gi\",\"callToActions\":[{\"name\":\"Serverless af\",\"icon\":\"far fa-paper-plane\",\"active\":true,\"id\":\"395a855d2b57e-brand\",\"url\":\"https://dashbird.io\"},{\"icon\":\"fa-star\",\"name\":\"Nominated for 2022 - HackerNoon Contributor of the Year - Cloud Computing\",\"active\":true,\"id\":\"2022 hackernoon contributor of the year cloud computing\",\"url\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-cloud-computing\"},{\"name\":\"Nominated for 2022 - HackerNoon Contributor of the Year - Devops\",\"icon\":\"fa-star\",\"active\":true,\"id\":\"2022 hackernoon contributor of the year devops\",\"url\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-devops\"},{\"icon\":\"fa-star\",\"name\":\"Nominated for 2022 - HackerNoon Contributor of the Year - Serverless\",\"active\":true,\"id\":\"2022 hackernoon contributor of the year serverless\",\"url\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-serverless\"},{\"icon\":\"fa-star\",\"name\":\"Nominated for 2022 - HackerNoon Contributor of the Year - Aws\",\"active\":true,\"id\":\"2022 hackernoon contributor of the year aws\",\"url\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-aws\"}],\"facebook\":null,\"bio\":\"CEO of Dashbird. 13y experience as a software developer \\u0026 5y of building Serverless applications.\",\"handle\":\"taavi-rehemagi\",\"linkedin\":\"https://www.linkedin.com/in/taavi-rehem%C3%A4gi-1a788445/\",\"medium\":\"\",\"avatar\":\"https://hackernoon.com/images/avatars/JT4BgXlfxveziEP9szyBKsEXoFf2.jpg\",\"socialMedia\":{\"twitter\":\"rehemagi\",\"linkedin\":\"https://www.linkedin.com/in/taavi-rehem%C3%A4gi-1a788445/\"},\"interested_tags\":[\"aws\",\"aws-lambda\",\"ecs\",\"elasticsearch\",\"microservices\",\"software-development\",\"software-engineering\",\"cloud-computing\"],\"twitter\":\"rehemagi\",\"adIcon\":\"far fa-paper-plane\",\"adLink\":\"https://dashbird.io\",\"awards\":{\"noonies2022nom_2022 hackernoon contributor of the year serverless\":{\"awardUrl\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-serverless\",\"year\":\"2022\",\"awardImgUrl\":\"\",\"description\":\"nomination\",\"title\":\"2022 - HackerNoon Contributor of the Year - Serverless\"},\"noonies2022nom_2022 hackernoon contributor of the year cloud computing\":{\"awardUrl\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-cloud-computing\",\"year\":\"2022\",\"description\":\"nomination\",\"awardImgUrl\":\"\",\"title\":\"2022 - HackerNoon Contributor of the Year - Cloud Computing\"},\"noonies2022nom_2022 hackernoon contributor of the year aws\":{\"awardUrl\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-aws\",\"year\":\"2022\",\"description\":\"nomination\",\"awardImgUrl\":\"\",\"title\":\"2022 - HackerNoon Contributor of the Year - Aws\"},\"noonies2022nom_2022 hackernoon contributor of the year devops\":{\"awardUrl\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-devops\",\"year\":\"2022\",\"awardImgUrl\":\"\",\"description\":\"nomination\",\"title\":\"2022 - HackerNoon Contributor of the Year - Devops\"}},\"about_page_settings\":{},\"long_bio\":\"\",\"publicBookmarks\":true,\"adText\":\"Serverless af\"},\"fromSlack\":false,\"publishedAt\":\"2021-08-25T15:02:56.203Z\"},{\"id\":\"Kia0cLKq6bcKEj8S3ZKY\",\"title\":\"10 Things I Did To Increase CloudTrail Logs Security\",\"slug\":\"10-things-i-did-to-increase-cloudtrail-logs-security-it2c3510\",\"mainImage\":\"https://hackernoon.com/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-w2362xht.jpeg\",\"tags\":[\"aws-cloudtrail\",\"aws\",\"security\",\"cloudsecurity\",\"logging\",\"compliance\",\"cyber-security\",\"aws-s3\",\"web-monetization\"],\"profile\":{\"youtube\":\"\",\"github\":\"thecrux4020\",\"callToActions\":[{\"name\":\"Connect with Me on LinkedIn!\",\"icon\":\"fa-coffee\",\"active\":true,\"id\":\"37d0d44caf7ce-brand\",\"url\":\"https://www.linkedin.com/in/leandro-mantovani/\"},{\"icon\":\"fa fa-book\",\"name\":\"Read My Stories\",\"active\":true,\"id\":\"640ee3a076c85\",\"url\":\"https://hackernoon.com/u/mantux\"},{\"icon\":\"fa-envelope\",\"name\":\"Newsletter\",\"active\":true,\"id\":\"009d710fe31\",\"url\":\"https://mantux.medium.com/subscribe\"},{\"name\":\"Hire Me\",\"icon\":\"fa-child\",\"active\":true,\"id\":\"7ca7b5ddf8f4c\",\"url\":\"https://www.linkedin.com/in/leandro-mantovani/\"},{\"icon\":\"fa-star\",\"name\":\"Nominated for 2022 - HackerNoon Contributor of the Year - Devops\",\"active\":true,\"id\":\"2022 hackernoon contributor of the year devops\",\"url\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-devops\"}],\"displayName\":\"Leandro Mantovani\",\"facebook\":\"\",\"bio\":\"Cloud Security Engineer | Researcher | Blogger | Soccer player\",\"handle\":\"mantux\",\"linkedin\":\"https://www.linkedin.com/in/leandro-mantovani/\",\"avatar\":\"https://cdn.hackernoon.com/images/h4ts12uxJmcmmek0Ou5TyGL9hhQ2-om02270.jpeg\",\"instagram\":\"\",\"socialMedia\":{\"github\":\"thecrux4020\",\"linkedin\":\"https://www.linkedin.com/in/leandro-mantovani/\"},\"interested_tags\":[\"hackernoon-top-story\",\"programming\",\"security\",\"latest-tech-stories\",\"blockchain\"],\"showStatsPublicly\":true,\"paymentPointer\":\"$ilp.uphold.com/jqXmnrPYDGpe\",\"twitter\":\"\",\"adIcon\":\"far fa-bug\",\"adLink\":\"https://bit.ly/2SGPGC6\",\"awards\":{\"noonies2022nom_2022 hackernoon contributor of the year devops\":{\"awardUrl\":\"https://www.noonies.tech/2022/programming/2022-hackernoon-contributor-of-the-year-devops\",\"year\":\"2022\",\"description\":\"nomination\",\"awardImgUrl\":\"\",\"title\":\"2022 - HackerNoon Contributor of the Year - Devops\"}},\"about_page_settings\":{},\"long_bio\":\"\",\"publicBookmarks\":true,\"adText\":\"Join my telegram channel about security!\"},\"fromSlack\":false,\"publishedAt\":\"2021-06-01T20:39:41.408Z\"},{\"id\":\"10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\",\"title\":\"10 reasons to give cloud computing a go\",\"slug\":\"10-reasons-to-give-cloud-computing-a-go-dc3184ec550e\",\"mainImage\":\"https://hackernoon.com/fallback-feat.png\",\"tags\":[\"cloud-computing\",\"aws\",\"azure\",\"devops\",\"saas\"],\"profile\":{\"displayName\":\"Vladimir Fedak\",\"handle\":\"FedakV\",\"autoGenerated\":true,\"avatar\":\"https://hackernoon.com/fallback-profile.png\"},\"fromSlack\":false,\"publishedAt\":\"2018-05-17T14:06:39.825Z\"},{\"id\":\"10-lessons-from-10-years-of-aws-part-1-258b56703fcf\",\"title\":\"10 Lessons from 10 Years of AWS (part 1)\",\"slug\":\"10-lessons-from-10-years-of-aws-part-1-258b56703fcf\",\"mainImage\":\"https://hackernoon.com/hn-images/1*EDXWCXhWUqE36cjfaTqqvg.png\",\"tags\":[\"aws\",\"cloud-computing\",\"amazon-web-services\",\"architecture\",\"lessons-learned\"],\"profile\":{\"displayName\":\"Adrian Hornsby\",\"handle\":\"adhorn\",\"avatar\":\"https://hackernoon.com/fallback-profile.png\",\"autoGenerated\":true},\"fromSlack\":false,\"publishedAt\":\"2017-12-02T16:54:05.800Z\"},{\"id\":\"10-lessons-from-10-years-of-aws-part-2-5dd92b533870\",\"title\":\"10 Lessons from 10 Years of AWS (part 2)\",\"slug\":\"10-lessons-from-10-years-of-aws-part-2-5dd92b533870\",\"mainImage\":\"https://hackernoon.com/fallback-feat.png\",\"tags\":[\"aws\",\"cloud-computing\",\"amazon-web-services\",\"architecture\",\"lessons-learned\"],\"profile\":{\"displayName\":\"Adrian Hornsby\",\"handle\":\"adhorn\",\"autoGenerated\":true,\"avatar\":\"https://hackernoon.com/fallback-profile.png\"},\"fromSlack\":false,\"publishedAt\":\"2018-01-12T11:35:21.320Z\"}],\"previousRead\":{\"slug\":\"subscribe-sqs-to-a-sns-topic-in-another-aws-account-with-cloudformation-and-gotchas-b80f229d32e4\",\"mainImage\":\"https://hackernoon.com/hn-images/0*_H3-LaaQUzj4JB_g.png\",\"owner\":\"YjziSuGeDecNvCZR0j4bivrb6V13\",\"title\":\"Subscribe SQS to a SNS topic in another AWS account with CloudFormation, and gotchas!\"},\"nextRead\":{\"slug\":\"lambda-optimization-tip-enable-http-keep-alive-6dc503f6f114\",\"mainImage\":\"https://hackernoon.com/hn-images/0*bmImHeGBqn0JWrQz.png\",\"owner\":\"YjziSuGeDecNvCZR0j4bivrb6V13\",\"title\":\"Lambda optimization tip\u200a\u2014\u200aenable HTTP keep-alive\"},\"staticData\":{\"frLangTooltip\":\"Lisez cette histoire en Fran\u00e7ais!\",\"about\":\"About\",\"enLangTooltip\":\"Read this story in the original language, English!\",\"loggedOutBookmark\":\"Create an account to store your bookmarks\",\"learnMore\":\"Learn More\",\"stats\":\"Stats\",\"editStory\":\"Edit Story\",\"audioPresented\":\"Audio Presented by\",\"by\":\"by\",\"audioTranslationText\":null,\"newStory\":\"New Story\",\"loggedInBookmark\":\"Bookmark story\",\"esLangTooltip\":\"Lee esta historia en Espa\u00f1ol!\",\"relatedStories\":\"RELATED STORIES\",\"addComment\":\"Add Comment\",\"ptLangTooltip\":\"Leia esta hist\u00f3ria em portugu\u00eas!\",\"hiLangTooltip\":\"\u0907\u0938 \u0915\u0939\u093e\u0928\u0940 \u0915\u094b \u0939\u093f\u0902\u0926\u0940 \u092e\u0947\u0902 \u092a\u0922\u093c\u0947\u0902!\",\"comments\":\"Comments\",\"removeBookmark\":\"Remove bookmark\",\"commentReply\":\"Reply\",\"minutes\":\"min\",\"reads\":\"reads\",\"trLangTooltip\":\"Bu hikayeyi T\u00fcrk\u00e7e okuyun!\",\"tags\":\"TOPICS\",\"jaLangTooltip\":\"\u3053\u306e\u7269\u8a9e\u3092\u65e5\u672c\u8a9e\u3067\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\uff01\",\"bnLangTooltip\":\"\u098f\u0987 \u0997\u09b2\u09cd\u09aa\u099f\u09bf \u09ac\u09be\u0982\u09b2\u09be\u09af\u09bc \u09aa\u09a1\u09bc\u09c1\u09a8!\",\"storyMentions\":\"MENTIONED IN THIS STORY\",\"ruLangTooltip\":\"\u041f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435!\",\"deLangTooltip\":\"Lesen Sie diese Geschichte auf Deutsch!\",\"featuredIn\":\"THIS ARTICLE WAS FEATURED IN\",\"tldrTitle\":\"Too Long; Didn't Read\",\"koLangTooltip\":\"\uc774 \uc774\uc57c\uae30\ub97c \ud55c\uad6d\uc5b4\ub85c \uc77d\uc5b4\ubcf4\uc138\uc694!\",\"zhLangTooltip\":\"\u7528\u7e41\u9ad4\u4e2d\u6587\u95b1\u8b80\u9019\u500b\u6545\u4e8b\uff01\",\"viLangTooltip\":\"\u0110\u1ecdc b\u00e0i vi\u1ebft n\u00e0y b\u1eb1ng ti\u1ebfng Vi\u1ec7t!\"},\"stats\":{\"pageviews\":483},\"socialPreviewImage\":\"https://hackernoon.imgix.net/hn-images/0*MU2JAw5c2Pkrb6Bn.png\",\"audioData\":null},\"slug\":\"debugging-serverless-applications-with-dashbird-82a2ed86d757\"},\"__N_SSG\":true},\"page\":\"/[slug]\",\"query\":{\"slug\":\"debugging-serverless-applications-with-dashbird-82a2ed86d757\"},\"buildId\":\"YRhe9DpUXZZf-6terF8nk\",\"isFallback\":false,\"dynamicIds\":[22033,25307,29700,72625,22819,77060,75632,99598,58656],\"gsp\":true,\"scriptLoader\":[]}</script></body></html>"},"msg":["CREDITS: this demo application is brought to you by courtesy of Dashbird.io. Dashbird makes monitoring logs and performance of serverless applications a breeze. Start a free trial today, no credit card required: https://dashbird.io","COPYRIGHT NOTICE: the data retrieved by the application may be subject to copyright and/or terms of usage. This application is intended ONLY for demonstration purposes. It does not grant you any rights over the content retrieved and you are solely responsible for non-legal usage of the application."]}