[{"data":1,"prerenderedAt":402},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-micronaut":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":19,"menu":20,"menuType":393,"isCollapseableMenu":23,"nextDocItem":206,"previousDocItem":185,"contributorPaths":394,"contentName":401,"slug":205,"readingTime":37},"\u003Cp>\u003Ca href=\"https:\u002F\u002Fmicronaut.io\u002F\">Micronaut\u003C\u002Fa> is a modern JVM-based, full stack framework for building modular, \neasily testable microservice and Serverless applications. \nMicronaut is natively Cloud-native and supports ahead-of-time (AOT) compilation. \nIt has smaller startup time and minimal memory footprint. Due to AOT, a majority of framework logic is computed at compilation time.\nMicronaut eliminates reflection, runtime proxies, dynamic class loading, and type erasure problems.\nIn addition, Micronaut has the following abilities:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Supports GraalVM native images out-of-the-box\u003C\u002Fli>\n\u003Cli>Lambda SnapStart support\u003C\u002Fli>\n\u003Cli>Certifies for Amazon Corretto\u003C\u002Fli>\n\u003Cli>AWS CDK support\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can \u003Ca href=\"https:\u002F\u002Fmicronaut.io\u002Flaunch\">launch a Micronaut application\u003C\u002Fa> planned to run on AWS Lambda. \nApplications created from Micronaut launch page for AWS Lambda come with Lambda SnapStart support by default.  \u003C\u002Fp>\n\u003Ch4>Micronaut AWS\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fmicronaut-projects.github.io\u002Fmicronaut-aws\u002Flatest\u002Fguide\u002F\">Micronaut AWS\u003C\u002Fa> provides integration between \nMicronaut application and AWS services like Amazon DynamoDB, Amazon S3, Amazon SQS, Amazon SNS, and more.\u003C\u002Fp>\n\u003Cp>Micronaut AWS also supports \u003Ca href=\"https:\u002F\u002Fmicronaut-projects.github.io\u002Fmicronaut-aws\u002Flatest\u002Fguide\u002F\">distributed configuration\u003C\u002Fa>\nvia services such as AWS Secrets Manager and AWS Parameter Store.\u003C\u002Fp>\n\u003Cp>With a simple config like below in \u003Ccode>src\u002Fmain\u002Fresources\u002Fbootstrap.yaml\u003C\u002Fcode> file you can enable a configuration client:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">micronaut:\n  config-client:\n    enabled: true\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Assuming you have used Secrets Manager for your RDS database secrets using AWS CDK as below:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">Secret rdsSecret = new Secret(this, &quot;RDSSecret&quot;, SecretProps.builder()\n  .secretName(&quot;\u002Fconfig\u002Fapplication\u002Frds&quot;)\n  .generateSecretString(SecretStringGenerator.builder()\n    .excludePunctuation(true)\n    .passwordLength(16)\n    .generateStringKey(&quot;password&quot;)\n    .secretStringTemplate(&quot;{\\&quot;username\\&quot;: \\&quot;&quot; + DBConstants.DB_USER_NAME + &quot;\\&quot;}&quot;)\n    .build())\n  .build());\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can create a datasource directly using the distributed configuration that can read the values corresponding to the\nkeys present in Secrets Manager configuration.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">micronaut:\n  config-client:\n    enabled: true\n\ndatasources:\n  default:\n    url: jdbc:mysql:\u002F\u002F${RDS_PROXY_ENDPOINT}:${port}\u002F${dbname}\n    driverClassName: com.mysql.cj.jdbc.Driver\n    username: ${username}\n    password: ${password}\n    dialect: MYSQL\n    schema-generate: CREATE\n    maximum-pool-size: 1\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This is a very powerful feature because it abstracts the movements of secrets and credentials by directly utilizing\nAWS Secrets Manager on your behalf.\u003C\u002Fp>\n\u003Cp>The code below shows \nhow to provision a Java-based Lambda function built on Micronaut as GraalVM native image using AWS CDK:\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fmicronaut_function.png\" alt=\"MicronautFunction\">\u003C\u002Fp>\n\u003Cp>You can learn more about building Micronaut application on AWS Lambda from the following GitHub samples:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain\">serverless-java-frameworks\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-rds-snapstart\">api-gateway-lambda-rds-snapstart\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",{"title":6,"order":7,"authors":8,"resources":11},"Micronaut",7,[9,10],"Lavanya Tangutur","Dhiraj Mahapatro",[12,16],{"link":13,"text":14,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","Serverless Java Frameworks","GitHub",{"link":17,"text":18,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-rds-snapstart","Micronaut with RDS","[Micronaut](https:\u002F\u002Fmicronaut.io\u002F) is a modern JVM-based, full stack framework for building modular, \neasily testable microservice and Serverless applications. \nMicronaut is natively Cloud-native and supports ahead-of-time (AOT) compilation. \nIt has smaller startup time and minimal memory footprint. Due to AOT, a majority of framework logic is computed at compilation time.\nMicronaut eliminates reflection, runtime proxies, dynamic class loading, and type erasure problems.\nIn addition, Micronaut has the following abilities:\n\n- Supports GraalVM native images out-of-the-box\n- Lambda SnapStart support\n- Certifies for Amazon Corretto\n- AWS CDK support\n\nYou can [launch a Micronaut application](https:\u002F\u002Fmicronaut.io\u002Flaunch) planned to run on AWS Lambda. \nApplications created from Micronaut launch page for AWS Lambda come with Lambda SnapStart support by default.  \n\n#### Micronaut AWS\n[Micronaut AWS](https:\u002F\u002Fmicronaut-projects.github.io\u002Fmicronaut-aws\u002Flatest\u002Fguide\u002F) provides integration between \nMicronaut application and AWS services like Amazon DynamoDB, Amazon S3, Amazon SQS, Amazon SNS, and more.\n\nMicronaut AWS also supports [distributed configuration](https:\u002F\u002Fmicronaut-projects.github.io\u002Fmicronaut-aws\u002Flatest\u002Fguide\u002F)\nvia services such as AWS Secrets Manager and AWS Parameter Store.\n\nWith a simple config like below in `src\u002Fmain\u002Fresources\u002Fbootstrap.yaml` file you can enable a configuration client:\n\n```java\nmicronaut:\n  config-client:\n    enabled: true\n```\n\nAssuming you have used Secrets Manager for your RDS database secrets using AWS CDK as below:\n\n```java\nSecret rdsSecret = new Secret(this, \"RDSSecret\", SecretProps.builder()\n  .secretName(\"\u002Fconfig\u002Fapplication\u002Frds\")\n  .generateSecretString(SecretStringGenerator.builder()\n    .excludePunctuation(true)\n    .passwordLength(16)\n    .generateStringKey(\"password\")\n    .secretStringTemplate(\"{\\\"username\\\": \\\"\" + DBConstants.DB_USER_NAME + \"\\\"}\")\n    .build())\n  .build());\n```\n\nYou can create a datasource directly using the distributed configuration that can read the values corresponding to the\nkeys present in Secrets Manager configuration.\n\n```java\nmicronaut:\n  config-client:\n    enabled: true\n\ndatasources:\n  default:\n    url: jdbc:mysql:\u002F\u002F${RDS_PROXY_ENDPOINT}:${port}\u002F${dbname}\n    driverClassName: com.mysql.cj.jdbc.Driver\n    username: ${username}\n    password: ${password}\n    dialect: MYSQL\n    schema-generate: CREATE\n    maximum-pool-size: 1\n```\n\nThis is a very powerful feature because it abstracts the movements of secrets and credentials by directly utilizing\nAWS Secrets Manager on your behalf.\n\nThe code below shows \nhow to provision a Java-based Lambda function built on Micronaut as GraalVM native image using AWS CDK:\n\n![MicronautFunction](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fmicronaut_function.png)\n\nYou can learn more about building Micronaut application on AWS Lambda from the following GitHub samples:\n\n- [serverless-java-frameworks](https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain)\n- [api-gateway-lambda-rds-snapstart](https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-rds-snapstart)\n",[21,41,67,195,241,298,314,353,375],{"title":22,"collapsible":23,"isCollapsed":24,"content":25},"Introduction",false,true,[26],{"title":27,"order":28,"authors":29,"callout":30,"prerequisite":34,"time":37,"path":38,"id":39,"link":40},"Getting Started",1,[10],{"title":31,"description":32,"link":33},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[35,36],"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":42,"collapsible":23,"isCollapsed":24,"content":43},"History",[44,52,59],{"title":45,"order":46,"authors":47,"time":48,"path":49,"id":50,"link":51},"Evolution of Java",3,[10],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":53,"order":54,"authors":55,"time":37,"path":56,"id":57,"link":58},"Evolution of Compute",4,[10],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":60,"order":61,"authors":62,"time":37,"path":64,"id":65,"link":66},"Challenges",5,[10,63],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":68,"collapsible":23,"isCollapsed":24,"content":69},"Best Practices",[70,88,98,104,121,138,156,171,185],{"title":71,"order":72,"youtubeVideoID":73,"authors":74,"callout":76,"resources":79,"time":84,"path":85,"id":86,"link":87},"Lambda Snapstart",6,"ZbnAithBNYY",[75,10],"Vipan Kumar",{"title":31,"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":72,"authors":90,"callout":91,"time":48,"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":72,"authors":100,"time":48,"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":105,"order":72,"authors":106,"youtubeVideoID":108,"resources":109,"time":117,"path":118,"id":119,"link":120},"Using RDS Proxy",[107,10],"Sonali Jena","ZQOqmMn_8jw",[110,114],{"link":111,"text":112,"type":113},"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":115,"type":113,"text":116},"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FAuroraUserGuide\u002Frds-proxy.html","RDS Proxy","4 min","rds-proxy","rds-proxy.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Frds-proxy",{"title":122,"order":72,"authors":123,"callout":124,"prerequisite":128,"resources":130,"time":37,"path":135,"id":136,"link":137},"Choice of HTTP Clients",[75,10],{"title":125,"description":126,"link":127},"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",[129],"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.",[131],{"link":132,"type":133,"text":134},"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":139,"order":72,"authors":140,"youtubeVideoID":141,"resources":142,"time":117,"path":153,"id":154,"link":155},"Hexagonal Architecture",[75],"kRFg6fkVChQ",[143,147,150],{"link":144,"text":145,"type":146},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":148,"text":149,"type":133},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":151,"type":133,"text":152},"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":157,"order":72,"authors":158,"youtubeVideoID":159,"resources":160,"time":37,"path":168,"id":169,"link":170},"Powertools for AWS Lambda",[9],"dH2GP6Lydj8",[161,165],{"link":162,"text":163,"type":164},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":166,"type":133,"text":167},"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":172,"order":72,"authors":173,"youtubeVideoID":174,"callout":175,"resources":179,"time":48,"path":182,"id":183,"link":184},"Lambda Power tuning ",[9,10],"z8wGSykEauI",{"title":176,"description":177,"link":178},"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",[180,181],{"link":111,"text":112,"type":113},{"link":115,"type":113,"text":116},"powertuning","powertuning.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertuning",{"title":186,"order":72,"authors":187,"resources":188,"time":37,"path":192,"id":193,"link":194},"Using Graviton2",[10],[189],{"link":190,"text":191,"type":133},"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":196,"collapsible":23,"isCollapsed":23,"content":197},"Java frameworks",[198,206,215,231],{"title":6,"order":7,"authors":199,"resources":200,"time":37,"path":203,"id":204,"link":205},[9,10],[201,202],{"link":13,"text":14,"type":15},{"link":17,"text":18,"type":15},"micronaut","micronaut.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmicronaut",{"title":207,"order":7,"authors":208,"resources":209,"time":37,"path":212,"id":213,"link":214},"Quarkus",[9,10],[210],{"link":13,"text":211,"type":15},"Quarkus sample application","quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":216,"order":7,"authors":217,"resources":218,"time":117,"path":228,"id":229,"link":230},"Spring",[9,63],[219,220,224],{"link":13,"text":211,"type":15},{"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":7,"authors":233,"resources":234,"time":37,"path":238,"id":239,"link":240},"GraalVM Native Image",[9,10],[235,237],{"link":13,"text":236,"type":15},"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":23,"isCollapsed":24,"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":15},"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":117,"path":267,"id":268,"link":269},"Unit Testing",[248],{"title":250,"description":251,"link":252},[266],{"link":255,"text":256,"type":15},"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":15},"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":15},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":290,"order":246,"authors":291,"callout":292,"resources":293,"time":37,"path":295,"id":296,"link":297},"Load Testing",[10],{"title":250,"description":251,"link":252},[294],{"link":255,"text":256,"type":15},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":299,"collapsible":23,"isCollapsed":24,"content":300},"Local Development",[301,308],{"title":302,"order":303,"authors":304,"time":48,"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":48,"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":23,"isCollapsed":24,"content":316},"Infrastructure as Code",[317,324,330,340],{"title":318,"order":319,"authors":320,"time":37,"path":321,"id":322,"link":323},"CloudFormation",9,[107],"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",[107],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":331,"order":319,"authors":332,"resources":333,"time":37,"path":337,"id":338,"link":339},"AWS SAM",[107],[334],{"link":335,"text":336,"type":133},"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":37,"path":350,"id":351,"link":352},"Terraform",[10],[344,347],{"link":345,"type":15,"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":113},"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":23,"isCollapsed":24,"content":355},"Benchmarking",[356],{"title":357,"order":358,"youtubeVideoID":359,"authors":360,"resources":361,"time":48,"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":13,"text":365,"type":15},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":367,"text":368,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":370,"text":371,"type":15},"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":23,"isCollapsed":24,"content":377},"Migration",[378],{"title":379,"order":380,"authors":381,"youtubeVideoID":382,"resources":383,"time":48,"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",1792665272837]