[{"data":1,"prerenderedAt":81},["ShallowReactive",2],{"content-guides-refactoring-serverless-direct_database_access":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":7,"contributorPaths":8,"menuType":12,"contentName":13,"slug":14,"readingTime":15,"menu":16,"nextDocItem":64,"previousDocItem":56},"\u003Ch2>Description\u003C\u002Fh2>\n\u003Cp>When using Step Functions, if you use Lambda to read data DynamoDB ,then the application&#39;s topology hidden inside the function code. To see what database is being called you have to look inside the Lambda code.\u003C\u002Fp>\n\u003Ch2>Solution\u003C\u002Fh2>\n\u003Cp>Use \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-supported-services.html\">Step Functions Integrations\u003C\u002Fa> to execute read operations in DynamoDB and remove the need to invoke a Lambda function.\u003C\u002Fp>\n\u003Cp>See the CDK implementation of this pattern in Typescript on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Faws-refactoring-to-serverless\u002Fblob\u002Fmain\u002Fimplementation\u002Fdirect-database-access\u002FREADME.md\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Fdirect-database-access.png\" alt=\"\">\u003C\u002Fp>\n\u003Ch4>Advantages\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cp>Removes the need to invoke a Lambda function to execute read operations in DynamoDB.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Simplifies the architecture and makes the integration explicit.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Improves performance and helps reducing response times and latency.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Lowers cost by reducing the use of cloud resources.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Limitations\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>It might not be applicable where the Lambda function performs a transformation before reading or after writing to DynamoDB.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Applicability\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>This refactoring can be applied to workloads that use Lambda functions is used purely to read.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Related Refactorings\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\".\u002Fservice_integration\">Service Integration\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",{"title":6},"Direct database access","## Description\n\nWhen using Step Functions, if you use Lambda to read data DynamoDB ,then the application's topology hidden inside the function code. To see what database is being called you have to look inside the Lambda code.\n\n## Solution\n\nUse [Step Functions Integrations](https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-supported-services.html) to execute read operations in DynamoDB and remove the need to invoke a Lambda function.\n\nSee the CDK implementation of this pattern in Typescript on [GitHub](https:\u002F\u002Fgithub.com\u002Faws-samples\u002Faws-refactoring-to-serverless\u002Fblob\u002Fmain\u002Fimplementation\u002Fdirect-database-access\u002FREADME.md).\n\n![](\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Fdirect-database-access.png)\n\n#### Advantages\n* Removes the need to invoke a Lambda function to execute read operations in DynamoDB.\n\n* Simplifies the architecture and makes the integration explicit.\n\n* Improves performance and helps reducing response times and latency.\n\n* Lowers cost by reducing the use of cloud resources.\n\n#### Limitations\n\n* It might not be applicable where the Lambda function performs a transformation before reading or after writing to DynamoDB.\n\n#### Applicability\n\n* This refactoring can be applied to workloads that use Lambda functions is used purely to read.\n\n## Related Refactorings\n- [Service Integration](.\u002Fservice_integration)\n",[9,10,11],"content\u002Fcontributors\u002Fgregor-hohpe.json","content\u002Fcontributors\u002Fsindhu-pillai.json","content\u002Fcontributors\u002Fbhuvan-annamreddi.json","LIST","Refactoring to Serverless","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fdirect_database_access","1 min",[17,42],{"title":18,"content":19},"Introduction",[20],{"title":13,"order":21,"callout":22,"resources":26,"time":38,"path":39,"id":40,"link":41},1,{"title":23,"description":24,"link":25},"Watch the video","This session shows how you can refactor an existing serverless application to fully utilize AWS managed services and make service dependencies explicit, resulting in cleaner and more robust code.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=F7wxgWaccHs",[27,31,34],{"link":28,"text":29,"type":30},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ttJAIQf7cTw","Building modern cloud applications? Think integration!","video",{"link":32,"text":33,"type":30},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ud9h1hJgoKk","Modern cloud applications - do they lock you in?",{"link":35,"text":36,"type":37},"https:\u002F\u002Fcdkpatterns.com\u002Fpatterns\u002F","CDK Patterns Collection","website","3 min","introduction","introduction.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fintroduction",{"title":43,"content":44},"Refactorings",[45,51,56,61,64,69,74],{"title":46,"time":47,"path":48,"id":49,"link":50},"Extract Send Message","2 min","extract_send_message","extract_send_message.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fextract_send_message",{"title":52,"time":47,"path":53,"id":54,"link":55},"Extract function invocation","extract_function_invocation","extract_function_invocation.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fextract_function_invocation",{"title":57,"time":47,"path":58,"id":59,"link":60},"Replace Lambda with Service Integration","service_integration","service_integration.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fservice_integration",{"title":6,"time":15,"path":62,"id":63,"link":14},"direct_database_access","direct_database_access.md",{"title":65,"time":15,"path":66,"id":67,"link":68},"Replace Polling with Callback","replace_polling_with_callback","replace_polling_with_callback.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Freplace_polling_with_callback",{"title":70,"time":47,"path":71,"id":72,"link":73},"Send Message via Pipes","send_message_via_pipes","send_message_via_pipes.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fsend_message_via_pipes",{"title":75,"authors":76,"time":38,"path":78,"id":79,"link":80},"Convert Choreography to Orchestration",[77],"Bhuvan Annamreddi","choreography-to-orchestration","choreography-to-orchestration.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fchoreography-to-orchestration",1789122887042]