[{"data":1,"prerenderedAt":661},["ShallowReactive",2],{"nav-products":3,"article-\u002Farticles\u002Fhow_to\u002F2020-12-19-how-to-lower-aws-costs\u002F":10,"article-latest-\u002Farticles\u002Fhow_to\u002F2020-12-19-how-to-lower-aws-costs\u002F":149},[4],{"name":5,"tagline":6,"to":7,"isInternal":8,"icon":9},"Valdras Gate","no VPN licenses to manage","\u002Fproducts\u002Fgate\u002F",true,"\u002Fpublic\u002Fimg\u002Fproducts\u002Fgate\u002Fgate_logo.png",{"id":11,"title":12,"author":13,"body":14,"category":137,"cover":138,"date":139,"description":140,"extension":141,"featured":142,"isFeatured":8,"meta":143,"navigation":8,"path":144,"preview":145,"seo":146,"stem":147,"__hash__":148},"articles\u002Farticles\u002Fhow_to\u002F2020-12-19-how-to-lower-aws-costs.md","How to lower AWS Costs","David Gatti",{"type":15,"value":16,"toc":129},"minimark",[17,26,31,34,38,41,44,47,58,63,66,69,72,81,85,88,91,94,98,101,105,108,112,115,119,122,126],[18,19,20,21,25],"p",{},"This article is meant for CEOs, CTOs, and Managers. The goal is to give a better understanding of how to lower AWS costs by answering a common raised question by clients: ",[22,23,24],"em",{},"What is the simplest way to lower the AWS bill","?",[27,28,30],"h1",{"id":29},"the-mysticism","The mysticism",[18,32,33],{},"AWS costs are wrapped in mysticism due to mysterious practices by companies that specialize in this field. The reality is simpler than you might think, otherwise these companies would not hide behind big words and convoluted explanations.",[27,35,37],{"id":36},"the-aws-billing-page","The AWS Billing Page",[18,39,40],{},"AWS provides you with a very simple to use billing page, which brakes down all your costs based on the service, and the region. This makes it easy to find the biggest expense in the account.",[18,42,43],{},"More importantly if you have an organization account and under that you have dozens of other AWS accounts, the billing page also provides you with a brake down based on the individual account under the organization. This makes it simple to find the account that is generating the biggest costs, while allowing you to then drill down to the service, and region.",[18,45,46],{},"The billing page is the most important thing to use when it comes to getting an idea of what is going on in the account. Once you know where the money goes, we can go into the details and figure out if there is something that can be changed to lower the monthly bill.",[18,48,49,50,57],{},"By the way: if you want to ",[51,52,56],"a",{"href":53,"rel":54},"https:\u002F\u002Fconsulting.0x4447.com\u002Farticles\u002Fknowledge\u002Fthe-benefits-of-aws-organizations.html",[55],"nofollow","learn more about the benefits of AWS Organizations",", check out the article.",[59,60,62],"h2",{"id":61},"pay-by-the-hour-services","Pay-By-The-Hour Services",[18,64,65],{},"The majority of the costs in your organization are going to come from EC2, RDS and similar Pay-By-The-Hour type services. This are the most used services, and most importantly AWS charges you for these services the moment they are turned on, regardless of the load.",[18,67,68],{},"The majority of the time, these services are turned on by employees temporarily just to perform a test, or run a one time job, but will forget to turn them off. Services could be left on for years, while your bank account is being drained for servers that have 0.45% CPU time.",[18,70,71],{},"Thankfully this problem can not only can be quickly identified, but also be quickly solved by just simply turning off those unused servers. The simplest approach is to stop all the servers with less then 1% CPU time in the case of Linux, and 3% in the case of Windows instances. This approach allows you to stop paying for the servers, but also turn them back on when they are actually needed (Because if they are, someone somewhere should start screaming).",[18,73,74,75,80],{},"On the other hand, if your servers are needed, then you are probably not taking advantage of the Reserved Instances features that AWS provides. With this service, instead of paying by the hour, you can pay up to 3 years upfront, and thus ",[51,76,79],{"href":77,"rel":78},"https:\u002F\u002Fconsulting.0x4447.com\u002Farticles\u002Fhow_to\u002Fhow-to-lower-ec2-costs.html",[55],"lowering your bill by 40% to 75%",", check the article to find out more.",[59,82,84],{"id":83},"serverless-services","Serverless Services",[18,86,87],{},"The next big contributors are all of the serverless technologies that AWS offers. In contrast to the pay-by-the-hour onset, this one generates a charge when actually used. This means that there might not be a quick fix. To reduce the price for these services, you’ll have to change how you use them. In the case of S3 it might be as simple as enabling Intelligent-Tiering on a S3 bucket, but in other cases you might have to change the code of the application, for example how DynamoDB is being used.",[18,89,90],{},"Since we are discussing DynamoDB already - when you use this NonSQL database in On-Demand mode, you get charged by how many queries to it you make, and also how much data is being moved back and fort. If the application using this services makes lots of poorly constructed requests, or the data is structured in a way where the data transfer is high, then you you’ll pay incredible amount of money on a daily basis.",[18,92,93],{},"In situations similar to these, you’d need an expert to look in to the problem, and come up with a solution, and then this solution will have to be implemented correctly to lower the bill.",[27,95,97],{"id":96},"prevention-mechanisms","Prevention Mechanisms",[18,99,100],{},"Overall the best approach is to always educate people to help them make better decisions when they use all that AWS has to offer. There also some simple ways to remind them of what they have learned.",[59,102,104],{"id":103},"for-pay-by-the-hour-services","For:  Pay-By-The-Hour Services",[18,106,107],{},"The IAM services has the idea of Policies, this are documents that specify what a IAM User can do in the AWS account. It can be as simple as the user has only access to EC2 Instances, or you can extend it to include which type of instances can be launched by the user, and even specify the region in which they can do that. With a policy like this you can be confident that nobody will launch expensive instances without permission. This is true for any service that is pay-by-the-hour.",[59,109,111],{"id":110},"for-serverless-services","For:  Serverless Services",[18,113,114],{},"Sadly, there is no way to have a policy that prevents developers from making queries the wrong way, or storing data the wrong way. The best solution here is to train the team so they can learn all the best practices for a given AWS Service.",[27,116,118],{"id":117},"good-monitoring","Good Monitoring",[18,120,121],{},"Lastly, a big part of keeping a close eye on the AWS expenses is good monitoring. Each service that is being used should have CloudWatch Alarms monitoring thresholds, and sending notifications when there is something that goes over your set limits. Of course in some cases this takes some effort to get the threshold just right, but once you do, you’ll know exactly when and what is causing a problem.",[27,123,125],{"id":124},"to-sum-it-up","To Sum it Up",[18,127,128],{},"Depending on your situation, I hope that you’ll be able to (even today!) lower your AWS bill substantially. If not, you should now have a good understanding on what to look for, and what to ask the people in your organization.",{"title":130,"searchDepth":131,"depth":131,"links":132},"",2,[133,134,135,136],{"id":61,"depth":131,"text":62},{"id":83,"depth":131,"text":84},{"id":103,"depth":131,"text":104},{"id":110,"depth":131,"text":111},"how_to","\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-lower-aws-costs\u002Fcover.jpg","2020-12-19","The reality is simpler than you might think.","md","\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-lower-aws-costs\u002Ffeatured.jpg",{},"\u002Farticles\u002Fhow_to\u002F2020-12-19-how-to-lower-aws-costs","\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-lower-aws-costs\u002Fpreview.jpg",{"title":12,"description":140},"articles\u002Fhow_to\u002F2020-12-19-how-to-lower-aws-costs","Ue0NtBlwRuOJiKw-z6IjKYQzo5f_yZp9XtFJX9IxQ9M",[150,223,514],{"id":11,"title":12,"author":13,"body":151,"category":137,"cover":138,"date":139,"description":140,"extension":141,"featured":142,"isFeatured":8,"meta":221,"navigation":8,"path":144,"preview":145,"seo":222,"stem":147,"__hash__":148},{"type":15,"value":152,"toc":215},[153,157,159,161,163,165,167,169,174,176,178,180,182,187,189,191,193,195,197,199,201,203,205,207,209,211,213],[18,154,20,155,25],{},[22,156,24],{},[27,158,30],{"id":29},[18,160,33],{},[27,162,37],{"id":36},[18,164,40],{},[18,166,43],{},[18,168,46],{},[18,170,49,171,57],{},[51,172,56],{"href":53,"rel":173},[55],[59,175,62],{"id":61},[18,177,65],{},[18,179,68],{},[18,181,71],{},[18,183,74,184,80],{},[51,185,79],{"href":77,"rel":186},[55],[59,188,84],{"id":83},[18,190,87],{},[18,192,90],{},[18,194,93],{},[27,196,97],{"id":96},[18,198,100],{},[59,200,104],{"id":103},[18,202,107],{},[59,204,111],{"id":110},[18,206,114],{},[27,208,118],{"id":117},[18,210,121],{},[27,212,125],{"id":124},[18,214,128],{},{"title":130,"searchDepth":131,"depth":131,"links":216},[217,218,219,220],{"id":61,"depth":131,"text":62},{"id":83,"depth":131,"text":84},{"id":103,"depth":131,"text":104},{"id":110,"depth":131,"text":111},{},{"title":12,"description":140},{"id":224,"title":225,"author":13,"body":226,"category":137,"cover":503,"date":504,"description":505,"extension":141,"featured":506,"isFeatured":507,"meta":508,"navigation":8,"path":509,"preview":510,"seo":511,"stem":512,"__hash__":513},"articles\u002Farticles\u002Fhow_to\u002F2020-10-17-how-to-hire-the-technical-team.md","How to hire the technical team",{"type":15,"value":227,"toc":497},[228,234,238,241,244,247,250,254,258,261,265,268,271,275,278,282,285,288,291,294,297,300,303,306,310,379,383,386,394,397,401,427,431,473,477,487,490],[18,229,230,231,25],{},"This article is meant for CEOs, CTOs, and Managers. The goal is to give a better understanding of how to hire technical people by answering a common raised by clients: ",[22,232,233],{},"how can I hire technical people when I myself know nothing about the technology world",[27,235,237],{"id":236},"understanding-the-symptoms","Understanding the symptoms",[18,239,240],{},"The biggest difficulty when hiring technical people is when you don’t fully understand the skill you are hiring for and you can only try to gage their expertise with your gut feeling. You are stuck with your fingers crossed that the new hire will be as he presents himself.",[18,242,243],{},"This is an issue that very often comes up with clients that I work with. Normally, the symptoms look like this: the project starts fairly well, you see progress, and milestones are being achieved; but, after a few months, the project starts to slow down, seemingly simple things start to take months, and\u002For the new features are unstable.",[18,245,246],{},"At this point, even as a non-technical person, you start to realize that something is not right.",[18,248,249],{},"This type of scenarios is not due to the lack of knowledge of how to code (coding is easy) - the problem is in the lack of understanding that organized code is more important than simply knowing how to use a “if” statement. Or the DevOps people don't fully understand AWS, nor the best practices that they should follow to manage the whole infrastructure correctly, since AWS is not a SaaS solution like Heroku or others. AWS is the building blocks that allow you to build your own SaaS application. This key difference requires having a different mindset that not many know they have to get into, and so they manage AWS by hand, in one environment, and with minimal automation.",[27,251,253],{"id":252},"how-to-fix-the-existing-damage","How to fix the existing damage?",[59,255,257],{"id":256},"code","Code",[18,259,260],{},"When I come in to help, I do not try to understand the code, since normally the state of the code is in poor condition. There are no comments, no spaces, no new lines, and no formatting at all. I focus on reformatting the code to make it clean and simple to understand, then I do a second pass where I start to simplify some expressions, and after this stage all the mistakes that were impossible to figure out become obvious and stand out on their own.",[59,262,264],{"id":263},"infrastructure","Infrastructure",[18,266,267],{},"In this situation, we need to go over the idea of the project from scratch, understand what you want to build, and then start to make a diagram of the whole infrastructure based on what I think needs to be done. Then with the team we go over it to see if I missed something, where the team may have already encountered some limitation of the approach worth not repeating. We then finalize the diagram.",[18,269,270],{},"Once that is completed, I start making multiple CloudFormation files that describe the stack on AWS. This means that what was done will be scrapped and everything will be redone using CloudFormation files that will be deployed in three new environments: Development, Demo and Production - to keep everything organized.",[27,272,274],{"id":273},"how-to-start-with-the-right-team","How to start with the right team",[18,276,277],{},"If you have not yet start to put together a team, this section is for you. Here I want to give you a good frame of reference on how to look for technical people, while having little-to-no technical skills yourself. I believe that asking very technical questions does not allow you to find the best talent. For example, a law company won't ask a candidate if they memorized all the law books; they want to find out what type of person is in front of them. Just because you memorized paragraph 8 doesn't mean you are a good lawyer. The same analogy can be used in the technology world. Just because you know a \"if()\" statement or a function, doesn't make you a good developer - you just know how to code, and that is just a skill.",[59,279,281],{"id":280},"what-to-focus-on","What to focus on",[18,283,284],{},"You can’t ask direct questions where the answer is a Yes or No, because you will always get back what you want to hear. You have to give open ended questions that require the other side to think.",[18,286,287],{},"You want to look for people that can explain what they know and are able to share their experience easily, where you don’t have to pull information out of them. If you have the most genius person that doesn't know how to talk to others, and most importantly doesn't know how to explain technical things to non-technical people, then you'd get someone with very limited use. This person can only function with another technical person. In the beginning of your company, if they have to report to you, then you don't want someone like this on your team.",[18,289,290],{},"Another important thing is not to ask for cliché things like their education or years of experience, because this information is meaningless. One person can be very good after 2 years of learning the skill, while others will be mediocre even if they have 8 or 20 years of experience. If someone worked for 20 years in a big company, they can easily hide their mediocrity within the organization. And worst of all, they might not even know they are mediocre. Education is the same: you could have passed with the lowest grades and still got a diploma. If someone slept thought the whole university, they might know less then a passionate programmer who learned his craft in his free time.",[18,292,293],{},"Also, just because someone has been in the market for 20 years already, dose not mean they are good at it. You can infer that they just know the syntax of the specific language they claim to know; whereas the most important skills are the abilities to write clearly and to easily understand code, which are things that nobody teaches anyone. People that write hard to understand code will make your project eventually grind to a halt, and you will be held hostage by one programmer because he is the only one that knows what he did. Under no circumstance would you want to be held hostage by unnecessary complexity.",[18,295,296],{},"Writing working code is not a skill; it is a trait. The skill is to make it presentable to others.",[18,298,299],{},"Similarly with AWS. I have interviewd countless AWS “experts” who claim to know all that there is to know about AWS, yet when asked something more serious, they fail. As of writing this article, AWS has 170 services - just because an \"expert\" claimed to have used 3 of them doesn't mean they know how to use AWS. I have talked with a lot of candidates that claim they know AWS because they made and account and went over a simple tutorial on how to setup a Lambda. To them, this is the basic requirement to claim to know AWS.",[18,301,302],{},"A true AWS expert is someone that knows the ideology of the service, is able to mix and match all of this services to build a cost effective and extensible solution that can grow over time with the business, understands the pitfalls, knows how to get out of problems, and can figure out a new service within a week to combine it with the project if necessary. Not to mention they need to know how to automate everything in AWS, because nothing can be done by hand, as clicking things around with a mouse through the AWS console is something that can’t scale over time.",[18,304,305],{},"An expert also needs to understand what security is, how to provide only the required access to employees, and how to adhere to best practices to make it easier to pass compliance tests.",[27,307,309],{"id":308},"general-questions-for-all","General questions for all",[311,312,313,324,332,339,347,355,363,371],"ul",{},[314,315,316,320,323],"li",{},[317,318,319],"strong",{},"How do you keep your team leader up to date with the progress of the work?",[321,322],"br",{},"This is personal, so if you like the answer, all good.",[314,325,326,329,331],{},[317,327,328],{},"What do you do when you don’t know something?",[321,330],{},"What you want to hear is that they check the documentation, search Google, ask friends, then look for help with you.",[314,333,334,337,323],{},[317,335,336],{},"When there is nothing to do, what do you do?",[321,338],{},[314,340,341,344,346],{},[317,342,343],{},"Do you make your bed in the morning?",[321,345],{},"You want to hear a \"Yes\", this should tell you that they are more organized than most and don't give up easily.",[314,348,349,352,354],{},[317,350,351],{},"After how many years will you be done learning?",[321,353],{},"You want to hear \"never.\" This is the only acceptable answer and approach to life.",[314,356,357,360,362],{},[317,358,359],{},"Why did you get into the technology business?",[321,361],{},"If someone is in it just for the money, it might mean they don't have a mindset where they want to learn and get better.",[314,364,365,368,370],{},[317,366,367],{},"When someone tells you it can't be done, what do you do?",[321,369],{},"The answer should be: \"I don't accept no for an answer.\"",[314,372,373,376,378],{},[317,374,375],{},"How many times do you try before asking for help?",[321,377],{},"You want someone that knows after a while he needs to ask for help.",[59,380,382],{"id":381},"how-to-check-for-comprehension","How to check for comprehension",[18,384,385],{},"Write a few paragraphs describing 5 tasks to be completed but not broken down into sections or a list. Then tell them to brake down your description into steps and technologies that need to be used to accomplish the task. What they come up with should:",[311,387,388,391],{},[314,389,390],{},"Have all 5 things that need to be done.",[314,392,393],{},"Should be easy to understand by you. If something is unclear, ask for clarification and see if they can simplify the step further.",[18,395,396],{},"Unclear explanations by people only means that either they don’t understand the technology or the problem itself. Either is a serious red flag, because people will create very complex solutions that will be hard to extend over time.",[27,398,400],{"id":399},"specific-questions-for-developer","Specific questions for Developer",[311,402,403,411,419],{},[314,404,405,408,410],{},[317,406,407],{},"Do you have some open source projects on GitHub?",[321,409],{},"They should have something. This shows that they are passionate about programming and love it so much that they spend their free time learning new things on their own.",[314,412,413,416,418],{},[317,414,415],{},"Paste 100 lines of the code that you are most proud of.",[321,417],{},"Regardless of if you know how to code or not, you should look for clear comments that explain the story of the code. And the code itself should look visually simple. The more the code feels good to you, the better.",[314,420,421,424,426],{},[317,422,423],{},"What is more important, to use all the latest features of a language, or to keep the code as simple as possible?",[321,425],{},"You want to hear that they want to keep the code as simple as possible. Using the latest features of a language means that they will lose themselves in semantics, theories, ideologies, and ideas instead of focusing on the work that needs to be done. These types of people can be good scholars, but in a company when works needs to be done right, they will slow the project down and create endless discussions that go nowhere.",[27,428,430],{"id":429},"specific-questions-for-aws-experts","Specific questions for AWS Experts",[311,432,433,441,449,457,465],{},[314,434,435,438,440],{},[317,436,437],{},"How would you host a website with no servers on AWS that is SEO friendly?",[321,439],{},"You want to hear that the site will be built statically, hosted on S3, and delivered over CloudFront; while setting up a CodePipeline to build the site automatically when there is new code in the repository to build the static version of the site through CodeBuild.",[314,442,443,446,448],{},[317,444,445],{},"How many services have you used in your latest project?",[321,447],{},"You want to hear services that you think you'd like to use in your project. It is impossible to know them all, but you want to hear at least 2\u002F3 of what you need.",[314,450,451,454,456],{},[317,452,453],{},"How did you integrate them with each other?",[321,455],{},"This is a hard one because you can make a project hundreds of ways that will all work. But AWS is designed around the idea of Triggers, especially when you deal with the Serverless part of AWS. So you want to hear that they used triggers to pass messages to another service, which then triggered another one etc.",[314,458,459,462,464],{},[317,460,461],{},"How do you keep up to date with AWS?",[321,463],{},"You want to hear that they work on small private projects, check the AWS Blog daily, and watch videos regarding how others use AWS, in order to get ideas that can be implemented in another project.",[314,466,467,470,472],{},[317,468,469],{},"When would you use Server and when Serverless?",[321,471],{},"Any project that you start on AWS, you want to start with Serverless. This is an ideal approach because in the beginning you don't know how the project will pan out, and once it picks up steam, you want to convert the most used lambdas or other services in to a regular server to improve performance and reduce costs. This is the ideal road map.",[27,474,476],{"id":475},"unacceptable-excuses","Unacceptable excuses",[311,478,479],{},[314,480,481,484,486],{},[317,482,483],{},"\"I can’t share my code\" or \"I have signed an NDA.\"",[321,485],{},"A passionate developer should be proud to have one or 2 projects open for anyone to see.",[27,488,489],{"id":124},"To sum it up",[18,491,492,493,496],{},"You don't understand technical people because you lack the knowledge they have, or you don't understand them because they can't explain their work in simpler terms. The technicality is their expertise and knowledge they acquired over time, which is something that you don't have to have. But they must be able to not make you feel stupid or question your intelligence. Knowledge is ",[22,494,495],{},"not"," intelligence.",{"title":130,"searchDepth":131,"depth":131,"links":498},[499,500,501,502],{"id":256,"depth":131,"text":257},{"id":263,"depth":131,"text":264},{"id":280,"depth":131,"text":281},{"id":381,"depth":131,"text":382},"\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-hire-the-technical-team\u002Fcover.jpg","2020-10-17","how can I hire technical people when I myself know nothing about the technology world?","\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-hire-the-technical-team\u002Ffeatured.jpg",false,{},"\u002Farticles\u002Fhow_to\u002F2020-10-17-how-to-hire-the-technical-team","\u002Fpublic\u002Fimg\u002Farticles\u002Fhow-to-hire-the-technical-team\u002Fpreview.jpg",{"title":225,"description":505},"articles\u002Fhow_to\u002F2020-10-17-how-to-hire-the-technical-team","h9c6vuD_yc_rjW34IauQptvB6Rivhw8tM05U1PLDUtY",{"id":515,"title":516,"author":13,"body":517,"category":650,"cover":651,"date":652,"description":653,"extension":141,"featured":654,"isFeatured":507,"meta":655,"navigation":8,"path":656,"preview":657,"seo":658,"stem":659,"__hash__":660},"articles\u002Farticles\u002Fexperience\u002F2020-09-06-the-best-serverless-database-combo-on-aws.md","The best serverless database combo on AWS",{"type":15,"value":518,"toc":638},[519,522,526,529,532,535,538,541,545,548,551,555,558,561,565,568,572,575,578,582,585,588,592,601,610,613,616,619,623,626,630,633,635],[18,520,521],{},"This article is meant for anyone who wants to better understand Serverless databases to get the best performance at the right price. This article asnwers an easier question: What is the best serverless database combo on AWS?",[59,523,525],{"id":524},"the-most-unconventional-solution","The most unconventional solution",[18,527,528],{},"Over the years, I came to realize that your typical SQL database that we've been using since the 80's are only good for one thing: creating reports and calculating stats.",[18,530,531],{},"SQL was typically used for everything, but nowadays we can be more specific with how we store data.",[18,533,534],{},"We now have at our disposal blazing fast databases that can handle insane amounts of read and write, that automatically scale based on traffic, while the downside is that they are bad at generating reports and summarizing data stored within them. We also have graph databases that allow us to track all the inner connections between objects, and we have databases that are very cheap, but are slow at retrieving the data.",[18,536,537],{},"Nowadays, you can pick multiple designs and store different types of data based on the use case, and this way you get the benefit of both worlds. You pay only for what you need and can manipulate the data with ease thanks to the specificity of the database.",[18,539,540],{},"Here's a simple example.",[59,542,544],{"id":543},"the-s3-and-dynamodb-combo","The S3 and DynamoDB combo",[18,546,547],{},"Based on my experience, the best database combo that also happens to be my current default approach, which is S3 and DynamoDB.",[18,549,550],{},"As far as I can see, this approach covers 80% of web applications out there. Where DDB would be used to host the data related to the application UI to render the interface as fast as possible, S3 is used to display the extra details when the user would be more comfortable waiting the extra time for additional information.",[59,552,554],{"id":553},"a-simple-example-invoices","A simple example - invoices",[18,556,557],{},"Every website with a payment option will have at the least monthly invoices generated in their system. When an invoice is generated, you can store the ID, Number, and Timestamp of the invoice in DynamoDB, and you can store the rest of the invoice details in S3.",[18,559,560],{},"This way you can display a table that loads all the rows blazing fast, which allows the user to have a quicker experience when going back to look for the right invoice. Once the user clicks on the invoice they want, you can pull all the rest of the information from S3, which is slower but acceptable by the user.",[59,562,564],{"id":563},"the-benefits","The benefits",[18,566,567],{},"This approach allows you to have a speedy UI while keeping the costs as low as possible. Costs can remain low because moving data back and forth in DynamoDB is expensive, but very cheap in S3. By combing the two, you can have the best of both worlds.",[59,569,571],{"id":570},"ideal-solution-to-test-ideas","Ideal solution to test ideas",[18,573,574],{},"This approach is ideal for startups to test an idea for a product and pay only for the resources used, because DynamoDBN and S3 are Serverless services provided by AWS where you pay only when those services are used. This means that while developing your costs will be minimal, and you will start paying more and more once you gain more and more users. Hopefully if your pricing structure for your product is correct, then you should be able to keep up with the AWS bill regardless of growth.",[18,576,577],{},"Once your business is established, you can look at the AWS bill and see if you would benefit from a transition to a different database, or if you should change how your application works to be even more efficient. The aforementioned approach is a solid start.",[59,579,581],{"id":580},"something-extra-s3-supports-sql","Something extra: S3 supports SQL",[18,583,584],{},"One important fact about S3 that not many people know is that you can run SQL queries on your data if the data is structured the right way. This allows you to store big JOSN files in S3 and query only for the data that you need. You will be able to minimize costs even more by only asking for the right information instead of pulling the whole file, not to mention that you will only need to download a fraction of the file itself.",[18,586,587],{},"S3's support of SQL is feature worth exploring and taking the time to understand.",[59,589,591],{"id":590},"real-life-example","Real life example",[18,593,594],{},[595,596],"img",{"alt":597,"className":598,"src":600},"example",[599],"uncontain","\u002Fpublic\u002Fimg\u002Farticles\u002Fthe-best-serverless-database-combo-on-aws\u002Fs3_ddb_example.png",[18,602,603,604,609],{},"The above screenshot is an example of how to organize your data between DynamoDB (in blue) and S3 (in red) using ",[51,605,608],{"href":606,"rel":607},"http:\u002F\u002Famazon.com",[55],"Amazon.com"," as a real life example. Of course this is just an idea to show how the approach explained above could be implemented, and it does not mean this is how you should always do it, or how Amazon should do it.",[18,611,612],{},"But lets drill down into the example: Lets assume you have written your code in a way that makes a call to DynamoDB and S3 in an asynchronous way.",[18,614,615],{},"First of all, I'd order my promises in a way where I'd first make all the S3 queries since they will be the slowest, and then move on to DynamoDB. Data from DDB will come sooner than S3, and so we can start displaying the page based on this information. By the time we are done, we should have the response from S3 which we can use to show the rest of the page.",[18,617,618],{},"Based on your applications and needs you can play with the order of the queries to fine tune the load time of the data.",[59,620,622],{"id":621},"what-else","What else",[18,624,625],{},"To maximize speed, especially with a website that has lots of data to display, you can consider splitting the data in to more then one file in S3. In the example above, you can have the basic description in one file, and you can have the extra description that is hidden under a page scroll in a separate file. That way you could download the second file after the first one in order to significantly speed up the page loading time, and the majority of the users won't notice that the detailed description did not show up immediately.",[59,627,629],{"id":628},"super-simple-backups","Super simple backups",[18,631,632],{},"This solution also makes it very easy to create backups. When it comes to DynamoDB, you only have to enable one switch to enable point in time recovery, while with S3 you can enable object versioning and keep, for example, 7 days worth of version for a file, thus allowing you to restore a deleted or modified file with ease.",[59,634,489],{"id":124},[18,636,637],{},"Of course over time, if your idea takes off, you could move crucial data to a faster Database to maximize revenue, but this approach would for sure help you build your idea, pay only for what you use, and not worry about database scalability and performance, since AWS guarantees the performances of these two services.",{"title":130,"searchDepth":131,"depth":131,"links":639},[640,641,642,643,644,645,646,647,648,649],{"id":524,"depth":131,"text":525},{"id":543,"depth":131,"text":544},{"id":553,"depth":131,"text":554},{"id":563,"depth":131,"text":564},{"id":570,"depth":131,"text":571},{"id":580,"depth":131,"text":581},{"id":590,"depth":131,"text":591},{"id":621,"depth":131,"text":622},{"id":628,"depth":131,"text":629},{"id":124,"depth":131,"text":489},"experience","\u002Fpublic\u002Fimg\u002Farticles\u002Fthe-best-serverless-database-combo-on-aws\u002Fcover.jpg","2020-09-06","What is the best serverless database combo on AWS?","\u002Fpublic\u002Fimg\u002Farticles\u002Fthe-best-serverless-database-combo-on-aws\u002Ffeatured.jpg",{},"\u002Farticles\u002Fexperience\u002F2020-09-06-the-best-serverless-database-combo-on-aws","\u002Fpublic\u002Fimg\u002Farticles\u002Fthe-best-serverless-database-combo-on-aws\u002Fpreview.jpg",{"title":516,"description":653},"articles\u002Fexperience\u002F2020-09-06-the-best-serverless-database-combo-on-aws","4m9KU2T1IZu4hWDZlX6TIKnERCbKKT3t4KCdBWvmUfo",1783756520033]