[{"data":1,"prerenderedAt":402},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-rds-proxy":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":20,"menu":21,"menuType":393,"isCollapseableMenu":24,"nextDocItem":113,"previousDocItem":98,"contributorPaths":394,"contentName":401,"slug":112,"readingTime":109},"\u003Cp>AWS Lambda scales up and down very quickly in response to demand. \nIn architectures where Lambda functions connect to a backend relational database, rapid scaling of Lambda functions can \ninitiate or drop hundreds to tens of thousands of concurrent connections to the database, \nexhausting database memory and compute resources.\u003C\u002Fp>\n\u003Ch4>Connection pooling in AWS Lambda\u003C\u002Fh4>\n\u003Cp>In your application running on AWS Lambda, if you use database connection pooling libraries like HikariCP, then you have\nto be careful about the default connection pool size set by those libraries. As mentioned earlier in the challenge\nsection, a single Lambda function execution environment can handle only one request at a time. Therefore, when the \nLambda function code is executed, you will never need more than one connection pool to work per execution environment. \nSo, set the maximum connection pool size to 1 in your application.\u003C\u002Fp>\n\u003Cp>However, Lambda functions can scale up rapidly based on incoming requests. Thus, requiring many connections from many\nexecution environments. This situation will easily overwhelm the underlying database. This is where Amazon RDS Proxy\ncan help ensure to stay within database connection pool limits.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Frds.png\" alt=\"RDS\">\u003C\u002Fp>\n\u003Ch4>Amazon RDS Proxy\u003C\u002Fh4>\n\u003Cp>Amazon RDS Proxy is a fully managed, highly available database proxy for \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Frds\u002F\">Amazon Relational Database Service (RDS)\u003C\u002Fa> \nthat makes applications more scalable, more resilient to database failures, and more secure. \nEssentially, it acts as an intermediary between your application and the database, \npoling and managing connections to the database, and enhances read and write scalability by \nefficiently managing and reusing database connection.\u003C\u002Fp>\n\u003Cp>RDS Proxy allows Lambda functions to pool and share connections established with the database \nthere by improving application performance. Amazon RDS Proxy supports Amazon Aurora database and Amazon RDS.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Frds_proxy.png\" alt=\"RDSProxy\">\u003C\u002Fp>\n\u003Ch4>Enabling Amazon RDS Proxy\u003C\u002Fh4>\n\u003Cp>Amazon RDS Proxy can be enabled for most applications without the need to provision or manage any additional infrastructure. \nYou can automatically set up connectivity between Lambda function and the Amazon RDS or Amazon Aurora database. \nDoing this minimizes the need for additional manual networking tasks such as setting up an AWS Virtual Private Cloud (VPC), \nsecurity groups, subnets, and ingress\u002Fegress rules to establish a connection between your serverless application and a database.\u003C\u002Fp>\n\u003Cp>Learn more about setting up connectivity to a compute resource from your RDS or Aurora database console \nin the \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FUserGuide\u002Flambda-rds-connect.html\">Amazon RDS User Guide\u003C\u002Fa> \nand the \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FAuroraUserGuide\u002Flambda-rds-connect.html\">Amazon Aurora User Guide\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>RDS Proxy Use Cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cp>Applications with bursts of traffic that open and close large number of connections and don’t have connection pooling mechanisms.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Security Enhancement:\u003C\u002Fstrong> \nAmazon RDS Proxy enforces the authentication policies for client connections. \nYou can take advantage of IAM authentication of your Lambda functions, \ninstead of managing database credentials in your Lambda application code.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>AWS Lambda functions are a good candidate for Amazon RDS Proxy. \nRDS Proxy offers connection pooling that helps manage database connections efficiently during traffic spikes.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Building resilient architectures:\u003C\u002Fstrong> \nAmazon RDS Proxy bypasses Domain Name System (DNS) caches to reduce failover times by up to 60% for Aurora Multi-AZ databases.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Example\u003C\u002Fh4>\n\u003Cp>Using AWS CDK and Java, you can create an RDS proxy for as shown below. \nThe RDS cluster created earlier, security groups, and secrets are needed to create \u003Ccode>DatbaseProxy\u003C\u002Fcode> \u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">DatabaseProxy proxy = new DatabaseProxy(this, &quot;RDSProxy&quot;, DatabaseProxyProps.builder()\n  .proxyTarget(ProxyTarget.fromCluster(rdsCluster))\n  .securityGroups(List.of(rdsSecurityGroup))\n  .secrets(List.of(rdsSecret))\n  .role(proxyRole)\n  .requireTls(true)\n  .vpc(vpc)\n  .build());\n\nString rdsProxyEndpoint = proxy.getEndpoint();\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Now, the Lambda function can use \u003Ccode>rdsProxyEndpoint\u003C\u002Fcode> to communicate to the database through RDS proxy.\nYou can pass the rds proxy endpoint url as an environment variable to the Lambda function.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">Function function = Function.Builder.create(this, &quot;UnicornStoreFunction&quot;)\n  \u002F\u002F other attributes are removed for brevity        \n  .runtime(Runtime.JAVA_17)\n  .environment(Map.of(\n    &quot;RDS_PROXY_ENDPOINT&quot;, rdsProxyEndpoint\n  ))\n  .build();\n\u003C\u002Fcode>\u003C\u002Fpre>\n",{"title":6,"order":7,"authors":8,"youtubeVideoID":11,"resources":12},"Using RDS Proxy",6,[9,10],"Sonali Jena","Dhiraj Mahapatro","ZQOqmMn_8jw",[13,17],{"link":14,"text":15,"type":16},"https:\u002F\u002Faws.amazon.com\u002Fgetting-started\u002Fhands-on\u002Fset-up-shared-database-connection-amazon-rds-proxy\u002F","Shared DB connections with RDS Proxy","user guide",{"link":18,"type":16,"text":19},"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FAuroraUserGuide\u002Frds-proxy.html","RDS Proxy","AWS Lambda scales up and down very quickly in response to demand. \nIn architectures where Lambda functions connect to a backend relational database, rapid scaling of Lambda functions can \ninitiate or drop hundreds to tens of thousands of concurrent connections to the database, \nexhausting database memory and compute resources.\n\n#### Connection pooling in AWS Lambda\nIn your application running on AWS Lambda, if you use database connection pooling libraries like HikariCP, then you have\nto be careful about the default connection pool size set by those libraries. As mentioned earlier in the challenge\nsection, a single Lambda function execution environment can handle only one request at a time. Therefore, when the \nLambda function code is executed, you will never need more than one connection pool to work per execution environment. \nSo, set the maximum connection pool size to 1 in your application.\n\nHowever, Lambda functions can scale up rapidly based on incoming requests. Thus, requiring many connections from many\nexecution environments. This situation will easily overwhelm the underlying database. This is where Amazon RDS Proxy\ncan help ensure to stay within database connection pool limits.\n\n![RDS](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Frds.png)\n\n#### Amazon RDS Proxy\nAmazon RDS Proxy is a fully managed, highly available database proxy for [Amazon Relational Database Service (RDS)](https:\u002F\u002Faws.amazon.com\u002Frds\u002F) \nthat makes applications more scalable, more resilient to database failures, and more secure. \nEssentially, it acts as an intermediary between your application and the database, \npoling and managing connections to the database, and enhances read and write scalability by \nefficiently managing and reusing database connection.\n\nRDS Proxy allows Lambda functions to pool and share connections established with the database \nthere by improving application performance. Amazon RDS Proxy supports Amazon Aurora database and Amazon RDS.\n\n![RDSProxy](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Frds_proxy.png)\n\n#### Enabling Amazon RDS Proxy\n\nAmazon RDS Proxy can be enabled for most applications without the need to provision or manage any additional infrastructure. \nYou can automatically set up connectivity between Lambda function and the Amazon RDS or Amazon Aurora database. \nDoing this minimizes the need for additional manual networking tasks such as setting up an AWS Virtual Private Cloud (VPC), \nsecurity groups, subnets, and ingress\u002Fegress rules to establish a connection between your serverless application and a database.\n\nLearn more about setting up connectivity to a compute resource from your RDS or Aurora database console \nin the [Amazon RDS User Guide](https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FUserGuide\u002Flambda-rds-connect.html) \nand the [Amazon Aurora User Guide](https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FAuroraUserGuide\u002Flambda-rds-connect.html).\n\n#### RDS Proxy Use Cases\n\n- Applications with bursts of traffic that open and close large number of connections and don’t have connection pooling mechanisms.\n\n- **Security Enhancement:** \n  Amazon RDS Proxy enforces the authentication policies for client connections. \n  You can take advantage of IAM authentication of your Lambda functions, \n  instead of managing database credentials in your Lambda application code.\n\n- AWS Lambda functions are a good candidate for Amazon RDS Proxy. \n  RDS Proxy offers connection pooling that helps manage database connections efficiently during traffic spikes.\n\n- **Building resilient architectures:** \n  Amazon RDS Proxy bypasses Domain Name System (DNS) caches to reduce failover times by up to 60% for Aurora Multi-AZ databases.\n\n#### Example\nUsing AWS CDK and Java, you can create an RDS proxy for as shown below. \nThe RDS cluster created earlier, security groups, and secrets are needed to create `DatbaseProxy` \n\n```java\nDatabaseProxy proxy = new DatabaseProxy(this, \"RDSProxy\", DatabaseProxyProps.builder()\n  .proxyTarget(ProxyTarget.fromCluster(rdsCluster))\n  .securityGroups(List.of(rdsSecurityGroup))\n  .secrets(List.of(rdsSecret))\n  .role(proxyRole)\n  .requireTls(true)\n  .vpc(vpc)\n  .build());\n\nString rdsProxyEndpoint = proxy.getEndpoint();\n```\nNow, the Lambda function can use `rdsProxyEndpoint` to communicate to the database through RDS proxy.\nYou can pass the rds proxy endpoint url as an environment variable to the Lambda function.\n\n```java\nFunction function = Function.Builder.create(this, \"UnicornStoreFunction\")\n  \u002F\u002F other attributes are removed for brevity        \n  .runtime(Runtime.JAVA_17)\n  .environment(Map.of(\n    \"RDS_PROXY_ENDPOINT\", rdsProxyEndpoint\n  ))\n  .build();\n```\n",[22,42,68,188,241,298,314,353,375],{"title":23,"collapsible":24,"isCollapsed":25,"content":26},"Introduction",false,true,[27],{"title":28,"order":29,"authors":30,"callout":31,"prerequisite":35,"time":38,"path":39,"id":40,"link":41},"Getting Started",1,[10],{"title":32,"description":33,"link":34},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[36,37],"Understanding of Java","Understanding of AWS Lambda","2 min","1-introduction","1-introduction.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002F1-introduction",{"title":43,"collapsible":24,"isCollapsed":25,"content":44},"History",[45,53,60],{"title":46,"order":47,"authors":48,"time":49,"path":50,"id":51,"link":52},"Evolution of Java",3,[10],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":54,"order":55,"authors":56,"time":38,"path":57,"id":58,"link":59},"Evolution of Compute",4,[10],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":61,"order":62,"authors":63,"time":38,"path":65,"id":66,"link":67},"Challenges",5,[10,64],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":69,"collapsible":24,"isCollapsed":24,"content":70},"Best Practices",[71,88,98,104,113,130,148,164,178],{"title":72,"order":7,"youtubeVideoID":73,"authors":74,"callout":76,"resources":79,"time":84,"path":85,"id":86,"link":87},"Lambda Snapstart","ZbnAithBNYY",[75,10],"Vipan Kumar",{"title":32,"description":77,"link":78},"This serverless office hours session dives deeper into Lambda SnapStart.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Y5b8_KToeDY",[80],{"link":81,"text":82,"type":83},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=IIKe2dx9Ag0","Spring IO (Barcelona)","video","8 min","snapstart","snapstart.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fsnapstart",{"title":89,"order":7,"authors":90,"callout":91,"time":49,"path":95,"id":96,"link":97},"Tiered Compilation",[75],{"title":92,"description":93,"link":94},"Read this blog","This AWS blog explains Tiered compilation in details","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fincreasing-performance-of-java-aws-lambda-functions-using-tiered-compilation\u002F","tiered-compilation","tiered-compilation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ftiered-compilation",{"title":99,"order":7,"authors":100,"time":49,"path":101,"id":102,"link":103},"Utilize initialization phase",[10],"init-heavy-lifting","init-heavy-lifting.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Finit-heavy-lifting",{"title":6,"order":7,"authors":105,"youtubeVideoID":11,"resources":106,"time":109,"path":110,"id":111,"link":112},[9,10],[107,108],{"link":14,"text":15,"type":16},{"link":18,"type":16,"text":19},"4 min","rds-proxy","rds-proxy.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Frds-proxy",{"title":114,"order":7,"authors":115,"callout":116,"prerequisite":120,"resources":122,"time":38,"path":127,"id":128,"link":129},"Choice of HTTP Clients",[75,10],{"title":117,"description":118,"link":119},"Read this Blog","This blog explains how AWS CRT HTTP Client offers faster startup time and small memory footprint","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Fannouncing-availability-of-the-aws-crt-http-client-in-the-aws-sdk-for-java-2-x\u002F",[121],"Before moving on to HTTP clients, the first and foremost requirement to improve performance in Lambda functions is to upgrade from AWS SDK Java v1 to AWS SDK Java v2 as soon as possible. Version 2 of the AWS SDK was released in Nov 2018 with a lot of performance upgrades.",[123],{"link":124,"type":125,"text":126},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Faws-sdk-for-java-2-x-released\u002F","blog","AWS SDK for Java v2","http-clients","http-clients.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhttp-clients",{"title":131,"order":7,"authors":132,"youtubeVideoID":133,"resources":134,"time":109,"path":145,"id":146,"link":147},"Hexagonal Architecture",[75],"kRFg6fkVChQ",[135,139,142],{"link":136,"text":137,"type":138},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":140,"text":141,"type":125},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":143,"type":125,"text":144},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-evolutionary-architecture-with-aws-lambda\u002F","Building evolutionary architecture on AWS Lambda","hexagonal","hexagonal.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhexagonal",{"title":149,"order":7,"authors":150,"youtubeVideoID":152,"resources":153,"time":38,"path":161,"id":162,"link":163},"Powertools for AWS Lambda",[151],"Lavanya Tangutur","dH2GP6Lydj8",[154,158],{"link":155,"text":156,"type":157},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":159,"type":125,"text":160},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fopensource\u002Fsimplifying-serverless-best-practices-with-aws-lambda-powertools-java\u002F","Best practices with Powertools","powertools","powertools.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertools",{"title":165,"order":7,"authors":166,"youtubeVideoID":167,"callout":168,"resources":172,"time":49,"path":175,"id":176,"link":177},"Lambda Power tuning ",[151,10],"z8wGSykEauI",{"title":169,"description":170,"link":171},"Watch the video","This video covers a variety of AWS Lambda performance and cost optimization techniques including use of Power tuning.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=z8wGSykEauI",[173,174],{"link":14,"text":15,"type":16},{"link":18,"type":16,"text":19},"powertuning","powertuning.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertuning",{"title":179,"order":7,"authors":180,"resources":181,"time":38,"path":185,"id":186,"link":187},"Using Graviton2",[10],[182],{"link":183,"text":184,"type":125},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fmigrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors\u002F","Using Arm-based Graviton2 processors","graviton","graviton.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraviton",{"title":189,"collapsible":24,"isCollapsed":25,"content":190},"Java frameworks",[191,206,215,231],{"title":192,"order":193,"authors":194,"resources":195,"time":38,"path":203,"id":204,"link":205},"Micronaut",7,[151,10],[196,200],{"link":197,"text":198,"type":199},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","Serverless Java Frameworks","GitHub",{"link":201,"text":202,"type":199},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-rds-snapstart","Micronaut with RDS","micronaut","micronaut.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmicronaut",{"title":207,"order":193,"authors":208,"resources":209,"time":38,"path":212,"id":213,"link":214},"Quarkus",[151,10],[210],{"link":197,"text":211,"type":199},"Quarkus sample application","quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":216,"order":193,"authors":217,"resources":218,"time":109,"path":228,"id":229,"link":230},"Spring",[151,64],[219,220,224],{"link":197,"text":211,"type":199},{"link":221,"text":222,"type":223},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US","Java on AWS Lambda","workshop",{"link":225,"text":226,"type":227},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Fdeveloping-with-java-and-spring-boot-using-amazon-codewhisperer\u002F","Build Spring Boot using Amazon CodeWhisperer","Blog","springboot","springboot.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fspringboot",{"title":232,"order":193,"authors":233,"resources":234,"time":38,"path":238,"id":239,"link":240},"GraalVM Native Image",[151,10],[235,237],{"link":197,"text":236,"type":199},"GraalVM sample application",{"link":221,"text":222,"type":223},"graalvm","graalvm.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraalvm",{"title":242,"collapsible":24,"isCollapsed":25,"content":243},"Testing a Java application",[244,261,270,280,289],{"title":245,"order":246,"authors":247,"callout":249,"resources":253,"time":257,"path":258,"id":259,"link":260},"Testing Serverless",8,[248],"Lorenzo Micheli",{"title":250,"description":251,"link":252},"Read the Serverless testing guide","This guide dives deeper into Serverless testing","https:\u002F\u002Fserverlessland.com\u002Ftesting",[254],{"link":255,"text":256,"type":199},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-test-samples\u002Ftree\u002Fmain\u002Fjava-test-samples","Serverless Java test samples","3 min","testing","testing.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ftesting",{"title":262,"order":246,"authors":263,"callout":264,"resources":265,"time":109,"path":267,"id":268,"link":269},"Unit Testing",[248],{"title":250,"description":251,"link":252},[266],{"link":255,"text":256,"type":199},"unit","unit.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Funit",{"title":271,"order":246,"authors":272,"callout":273,"resources":274,"time":276,"path":277,"id":278,"link":279},"Integration Testing",[248,10],{"title":250,"description":251,"link":252},[275],{"link":255,"text":256,"type":199},"5 min","integration","integration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintegration",{"title":281,"order":246,"authors":282,"callout":283,"resources":284,"time":257,"path":286,"id":287,"link":288},"Functional Testing",[248,10],{"title":250,"description":251,"link":252},[285],{"link":255,"text":256,"type":199},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":290,"order":246,"authors":291,"callout":292,"resources":293,"time":38,"path":295,"id":296,"link":297},"Load Testing",[10],{"title":250,"description":251,"link":252},[294],{"link":255,"text":256,"type":199},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":299,"collapsible":24,"isCollapsed":25,"content":300},"Local Development",[301,308],{"title":302,"order":303,"authors":304,"time":49,"path":305,"id":306,"link":307},"IntelliJ",10,[10],"intellij","intellij.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintellij",{"title":309,"order":303,"authors":310,"time":49,"path":311,"id":312,"link":313},"Visual Studio Code",[10],"vscode","vscode.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fvscode",{"title":315,"collapsible":24,"isCollapsed":25,"content":316},"Infrastructure as Code",[317,324,330,340],{"title":318,"order":319,"authors":320,"time":38,"path":321,"id":322,"link":323},"CloudFormation",9,[9],"cloudformation","cloudformation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcloudformation",{"title":325,"order":319,"authors":326,"time":276,"path":327,"id":328,"link":329},"AWS CDK",[9],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":331,"order":319,"authors":332,"resources":333,"time":38,"path":337,"id":338,"link":339},"AWS SAM",[9],[334],{"link":335,"text":336,"type":125},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fbuilding-serverless-java-applications-with-the-aws-sam-cli\u002F","Java Serverless AWS SAM CLI","sam","sam.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fsam",{"title":341,"order":319,"authors":342,"resources":343,"time":38,"path":350,"id":351,"link":352},"Terraform",[10],[344,347],{"link":345,"type":199,"text":346},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-snapstart-terraform","Java sample with Terraform",{"link":348,"text":349,"type":16},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Fwhat-is-terraform-support.html","AWS SAM CLI Terraform support","terraform","terraform.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fterraform",{"title":354,"collapsible":24,"isCollapsed":25,"content":355},"Benchmarking",[356],{"title":357,"order":358,"youtubeVideoID":359,"authors":360,"resources":361,"time":49,"path":372,"id":373,"link":374},"Performance Benchmarking",11,"wmEIMWigXGc",[10],[362,364,366,369],{"link":363,"text":222,"type":223},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US\u002F01-migration\u002F02-optimizations\u002Fbenchmark",{"link":197,"text":365,"type":199},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":367,"text":368,"type":199},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":370,"text":371,"type":199},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-kotlin-demo","Benchmark Kotlin on Serverless","benchmark","benchmark.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fbenchmark",{"title":376,"collapsible":24,"isCollapsed":25,"content":377},"Migration",[378],{"title":379,"order":380,"authors":381,"youtubeVideoID":382,"resources":383,"time":49,"path":390,"id":391,"link":392},"Migration Guide",12,[10],"u3tgOE8qFjI",[384,388],{"link":385,"text":386,"type":387},"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fpaved-path\u002Fjava-replatforming\u002Fintroduction","Java re-platforming guide","Guide",{"link":221,"text":222,"type":389},"Workshop","migration","migration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmigration","LIST",[395,396,397,398,399,400],"content\u002Fcontributors\u002Fdhiraj-mahapatro.json","content\u002Fcontributors\u002Fsonali-jena.json","content\u002Fcontributors\u002Flavanya-tangutur.json","content\u002Fcontributors\u002Fvipan-kumar.json","content\u002Fcontributors\u002Florenzo-micheli.json","content\u002Fcontributors\u002Fmaximilian-schellhorn.json","Effectively running Java on Serverless",1791369322931]