CINXE.COM

Whop Success Story – Database Infrastructure Migration to AWS

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Whop Success Story – Database Infrastructure Migration to AWS</title> <link rel="shortcut icon" href="https://resources.stormatics.tech/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0%20(1)-1.png"> <meta name="description" content="Learn how Whop had a seamless database infrastructure migration from Heroku to AWS with Stormatics "> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta property="og:description" content="Learn how Whop had a seamless database infrastructure migration from Heroku to AWS with Stormatics "> <meta property="og:title" content="Whop Success Story – Database Infrastructure Migration to AWS"> <meta name="twitter:description" content="Learn how Whop had a seamless database infrastructure migration from Heroku to AWS with Stormatics "> <meta name="twitter:title" content="Whop Success Story – Database Infrastructure Migration to AWS"> <style> a.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'›';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px} </style> <link rel="stylesheet" href="//7052064.fs1.hubspotusercontent-na1.net/hubfs/7052064/hub_generated/template_assets/DEFAULT_ASSET/1741787936212/template_main.min.css"> <style> html { font-size: 18px; } body { background-color: #ffffff; color: ; font-family: Roboto; } .body-section.dark { background-color: #103756; color: #ffffff; } .body-section.dark a { font-family: Roboto; color: #ffffff; font-style: normal; font-weight: normal; text-decoration: none; } .body-section.dark a:active { color: #cdcdcd; } .body-section.dark a:visited { color: #cdcdcd; } .body-section.dark a:hover { color: #cdcdcd; } .body-section.dark h1, .body-section.dark h2, .body-section.dark h3, .body-section.dark h4, .body-section.dark h5, .body-section.dark h6 { font-family: Roboto; color: #ffffff; } .body__header.light a, .body-section.light a { font-family: Roboto; color: ; font-style: normal; font-weight: normal; text-decoration: none; } .body__header.light a:active, .body-section.light a:active { color: ; } .body__header.light a:visited, .body-section.light a:visited { color: ; } .body__header.light a:hover, .body-section.light a:hover { color: ; } h1, h2, h3, h4, h5, h6 { font-family: Roboto; color: ; } /* One Line Inputs */ input[type=text], input[type=password], input[type=datetime], input[type=datetime-local], input[type=date], input[type=month], input[type=time], input[type=week], input[type=number], input[type=email], input[type=url], input[type=search], input[type=tel], input[type=color], input[type=file], textarea, select { color: ; font-family: Roboto; } input[type=text]::-webkit-input-placeholder, input[type=password]::-webkit-input-placeholder, input[type=datetime]::-webkit-input-placeholder, input[type=datetime-local]::-webkit-input-placeholder, input[type=date]::-webkit-input-placeholder, input[type=month]::-webkit-input-placeholder, input[type=time]::-webkit-input-placeholder, input[type=week]::-webkit-input-placeholder, input[type=number]::-webkit-input-placeholder, input[type=email]::-webkit-input-placeholder, input[type=url]::-webkit-input-placeholder, input[type=search]::-webkit-input-placeholder, input[type=tel]::-webkit-input-placeholder, input[type=color]::-webkit-input-placeholder, input[type=file]::-webkit-input-placeholder, textarea::-webkit-input-placeholder, select::-webkit-input-placeholder { font-family: Roboto; } input[type=text]::-moz-placeholder, input[type=password]::-moz-placeholder, input[type=datetime]::-moz-placeholder, input[type=datetime-local]::-moz-placeholder, input[type=date]::-moz-placeholder, input[type=month]::-moz-placeholder, input[type=time]::-moz-placeholder, input[type=week]::-moz-placeholder, input[type=number]::-moz-placeholder, input[type=email]::-moz-placeholder, input[type=url]::-moz-placeholder, input[type=search]::-moz-placeholder, input[type=tel]::-moz-placeholder, input[type=color]::-moz-placeholder, input[type=file]::-moz-placeholder, textarea::-moz-placeholder, select::-moz-placeholder { font-family: Roboto; } input[type=text]:-ms-input-placeholder, input[type=password]:-ms-input-placeholder, input[type=datetime]:-ms-input-placeholder, input[type=datetime-local]:-ms-input-placeholder, input[type=date]:-ms-input-placeholder, input[type=month]:-ms-input-placeholder, input[type=time]:-ms-input-placeholder, input[type=week]:-ms-input-placeholder, input[type=number]:-ms-input-placeholder, input[type=email]:-ms-input-placeholder, input[type=url]:-ms-input-placeholder, input[type=search]:-ms-input-placeholder, input[type=tel]:-ms-input-placeholder, input[type=color]:-ms-input-placeholder, input[type=file]:-ms-input-placeholder, textarea:-ms-input-placeholder, select:-ms-input-placeholder { font-family: Roboto; } .hsv-form { color: ; } .body-section.light input[type=text], .body-section.light input[type=password], .body-section.light input[type=datetime], .body-section.light input[type=datetime-local], .body-section.light input[type=date], .body-section.light input[type=month], .body-section.light input[type=time], .body-section.light input[type=week], .body-section.light input[type=number], .body-section.light input[type=email], .body-section.light input[type=url], .body-section.light input[type=search], .body-section.light input[type=tel], .body-section.light input[type=color], .body-section.light input[type=file], .body-section.light textarea, .body-section.light select, .hsv-form input[type=text], .hsv-form input[type=password], .hsv-form input[type=datetime], .hsv-form input[type=datetime-local], .hsv-form input[type=date], .hsv-form input[type=month], .hsv-form input[type=time], .hsv-form input[type=week], .hsv-form input[type=number], .hsv-form input[type=email], .hsv-form input[type=url], .hsv-form input[type=search], .hsv-form input[type=tel], .hsv-form input[type=color], .hsv-form input[type=file], .hsv-form textarea, .hsv-form select { border-color: #050533; } .body-section.light .hs-input[type=checkbox]:not(:checked) + span:before, .body-section.light .hs-input[type=checkbox]:checked + span:before, .body-section.light .hs-input[type=radio]:not(:checked) + span:before, .body-section.light .hs-input[type=radio]:checked + span:before, .hsv-form .hs-input[type=checkbox]:not(:checked) + span:before, .hsv-form .hs-input[type=checkbox]:checked + span:before, .hsv-form .hs-input[type=radio]:not(:checked) + span:before, .hsv-form .hs-input[type=radio]:checked + span:before { border-color: #050533; } /* Form Buttons */ .body-section.dark .hs-button, .body-section.dark a.hs-button, .body-section.dark input[type=submit], .body-section.dark input[type=button], .body-section.light .hs-button, .body-section.light a.hs-button, .body-section.light input[type=submit], .body-section.light input[type=button] { background-color: #103756; color: #ffffff; border-radius: 38px; font-family: Roboto; } .body-section.dark .hs-button:hover, .body-section.dark a.hs-button:hover, .body-section.dark input[type=submit]:hover, .body-section.dark input[type=button]:hover, .body-section.light .hs-button:hover, .body-section.light a.hs-button:hover, .body-section.light input[type=submit]:hover, .body-section.light input[type=button]:hover { background-color: #002342; } /* Forms customizations */ .hs-input[type=checkbox]:not(:checked) + span:after, .hs-input[type=checkbox]:checked + span:after { border-bottom-color: #050533; border-right-color: #050533; } .hs-input[type=radio]:not(:checked) + span:after, .hs-input[type=radio]:checked + span:after { background-color: #050533; } .hs-fieldtype-file div.input:before { background-color: #103756; color: #ffffff; border-color: #103756; } .hs-fieldtype-file div.input:hover:before { background-color: #002342; border-color: #002342; } /* enable dropdown button customization */ .hs-fieldtype-select .input:after { color: ; }</style> <style> @font-face { font-family: "Work Sans"; font-weight: 400; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Work_Sans/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Work_Sans/regular.woff") format("woff"); } @font-face { font-family: "Roboto"; font-weight: 400; font-style: normal; font-display: swap; src: url("/_hcms/googlefonts/Roboto/regular.woff2") format("woff2"), url("/_hcms/googlefonts/Roboto/regular.woff") format("woff"); } </style> <!-- Editor Styles --> <style id="hs_editor_style" type="text/css"> #hs_cos_wrapper_dnd__header-module-1 { display: block !important; padding-bottom: 0px !important } #hs_cos_wrapper_dnd__banner-module-2 { display: block !important; padding-bottom: 10px !important; padding-left: 70px !important; padding-right: 0px !important; padding-top: 10px !important } #hs_cos_wrapper_widget_1712320846650 { background-color: #FFFFFF !important; background-image: none !important; border-color: #000000 !important; border-style: none !important; display: block !important } #hs_cos_wrapper_widget_1712320846650 input[type="submit"] { background-color: #103756 !important; background-image: none !important; border-color: #FFFFFF !important; color: #FFFFFF !important } #hs_cos_wrapper_widget_1712320846650 .hs-button { background-color: #103756 !important; background-image: none !important; border-color: #FFFFFF !important; color: #FFFFFF !important } #hs_cos_wrapper_widget_1712320846650 .hs-submit { text-align: LEFT !important } #hs_cos_wrapper_widget_1712320846650 .hs-form-field { text-align: LEFT !important } #hs_cos_wrapper_widget_1712320846650 input[type="text"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="email"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 textarea { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="number"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 select { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="file"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="tel"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="date"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 .hs-error-msg { color: #FF0201 !important } #hs_cos_wrapper_widget_1712320846650 .hs_error_rollup .hs-error-msgs .hs-main-font-element { color: #FF0201 !important } #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) { color: #103756 !important } #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) p , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) li , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) span , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) label , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h1 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h2 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h3 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h4 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h5 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h6 { color: #103756 !important } #hs_cos_wrapper_widget_1712320846650 .hs-richtext { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .hs-richtext p { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .form-title { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .submitted-message { color: #000000 !important } #hs_cos_wrapper_dnd__banner-module-2 { display: block !important; padding-bottom: 10px !important; padding-left: 70px !important; padding-right: 0px !important; padding-top: 10px !important } #hs_cos_wrapper_widget_1712320846650 { background-color: #FFFFFF !important; background-image: none !important; border-color: #000000 !important; border-style: none !important; display: block !important } #hs_cos_wrapper_widget_1712320846650 input[type="submit"] { background-color: #103756 !important; background-image: none !important; border-color: #FFFFFF !important; color: #FFFFFF !important } #hs_cos_wrapper_widget_1712320846650 .hs-button { background-color: #103756 !important; background-image: none !important; border-color: #FFFFFF !important; color: #FFFFFF !important } #hs_cos_wrapper_widget_1712320846650 .hs-submit { text-align: LEFT !important } #hs_cos_wrapper_widget_1712320846650 .hs-form-field { text-align: LEFT !important } #hs_cos_wrapper_widget_1712320846650 input[type="text"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="email"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 textarea { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="number"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 select { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="file"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="tel"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 input[type="date"] { background-color: #FAFAFA !important; background-image: none !important; border-color: #000000 !important; color: #000000 !important; text-align: left !important } #hs_cos_wrapper_widget_1712320846650 .hs-error-msg { color: #FF0201 !important } #hs_cos_wrapper_widget_1712320846650 .hs_error_rollup .hs-error-msgs .hs-main-font-element { color: #FF0201 !important } #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) { color: #103756 !important } #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) p , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) li , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) span , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) label , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h1 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h2 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h3 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h4 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h5 , #hs_cos_wrapper_widget_1712320846650 label:not(.hs-error-msg) h6 { color: #103756 !important } #hs_cos_wrapper_widget_1712320846650 .hs-richtext { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .hs-richtext p { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .form-title { color: #000000 !important } #hs_cos_wrapper_widget_1712320846650 .submitted-message { color: #000000 !important } #hs_cos_wrapper_dnd__header-module-1 { display: block !important; padding-bottom: 0px !important } .dnd__header-row-0-max-width-section-centering > .row-fluid { max-width: 940px !important; margin-left: auto !important; margin-right: auto !important; } .dnd__banner-row-0-force-full-width-section > .row-fluid { max-width: none !important; } .dnd__footer-row-0-max-width-section-centering > .row-fluid { max-width: 940px !important; margin-left: auto !important; margin-right: auto !important; } /* HubSpot Non-stacked Media Query Styles */ @media (min-width:768px) { .dnd__banner-row-0-vertical-alignment > .row-fluid { display: -ms-flexbox !important; -ms-flex-direction: row; display: flex !important; flex-direction: row; } .dnd__banner-column-1-vertical-alignment { display: -ms-flexbox !important; -ms-flex-direction: column !important; -ms-flex-pack: center !important; display: flex !important; flex-direction: column !important; justify-content: center !important; } .dnd__banner-column-1-vertical-alignment > div { flex-shrink: 0 !important; } } /* HubSpot Styles (default) */ .dnd__header-row-0-padding { padding-top: 14px !important; padding-bottom: 14px !important; padding-left: 15px !important; padding-right: 15px !important; } .dnd__banner-row-0-padding { padding-top: 30px !important; padding-bottom: 30px !important; padding-left: 15px !important; padding-right: 0px !important; } .dnd__banner-row-0-hidden { display: block !important; } .dnd__banner-row-0-background-layers { background-image: linear-gradient(rgba(19, 79, 92, 1), rgba(19, 79, 92, 1)) !important; background-position: left top !important; background-size: auto !important; background-repeat: no-repeat !important; } .dnd__banner-row-1-background-layers { background-image: linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 1)) !important; background-position: left top !important; background-size: auto !important; background-repeat: no-repeat !important; } .dnd__banner-column-1-padding { padding-top: 0px !important; padding-left: 30px !important; padding-right: 40px !important; } .dnd__footer-row-0-padding { padding-top: 15px !important; padding-bottom: 15px !important; padding-left: 15px !important; padding-right: 15px !important; } .dnd__footer-row-0-background-layers { background-image: linear-gradient(rgba(16, 55, 86, 1), rgba(16, 55, 86, 1)) !important; background-position: left top !important; background-size: auto !important; background-repeat: no-repeat !important; } /* HubSpot Styles (mobile) */ @media (max-width: 767px) { .dnd__banner-row-0-padding { padding-top: 80px !important; padding-bottom: 80px !important; } .dnd__banner-column-1-padding { padding-top: 0px !important; padding-left: 0px !important; padding-right: 0px !important; } } </style> <link rel="canonical" href="https://resources.stormatics.tech/whop-database-infrastructure-migration"> <meta property="og:image" content="https://resources.stormatics.tech/hubfs/On-Demand%20Webinar%20-%20Fireside%20Chat%20Oracle%20To%20PostgreSQL%20Migration-1.png"> <meta property="og:image:width" content="1920"> <meta property="og:image:height" content="1080"> <meta property="og:image:alt" content="Whop Success Story – Database Infrastructure Migration to AWS"> <meta name="twitter:image" content="https://resources.stormatics.tech/hubfs/On-Demand%20Webinar%20-%20Fireside%20Chat%20Oracle%20To%20PostgreSQL%20Migration-1.png"> <meta name="twitter:image:alt" content="Whop Success Story – Database Infrastructure Migration to AWS"> <meta property="og:url" content="https://resources.stormatics.tech/whop-database-infrastructure-migration"> <meta name="twitter:card" content="summary_large_image"> <meta http-equiv="content-language" content="en"> <meta name="generator" content="HubSpot"></head> <body> <div class="body-wrapper"> <div class="dnd-content-area compass__event"> <div class="body-container-wrapper"> <div class="body-container"> <div class="container-fluid body__header compass__event--header light"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12"> <div class="row-fluid-wrapper row-depth-1 row-number-1 dnd-section dnd__header-row-0-padding dnd__header-row-0-max-width-section-centering"> <div class="row-fluid "> <div class="span12 widget-span widget-type-custom_widget dnd-module" style="" data-widget-type="custom_widget" data-x="0" data-w="12"> <div id="hs_cos_wrapper_dnd__header-module-1" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-logo widget-type-logo" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> <span id="hs_cos_wrapper_dnd__header-module-1_hs_logo_widget" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_logo" style="" data-hs-cos-general-type="widget" data-hs-cos-type="logo"><a href="https://stormatics.tech/" target="_blank" id="hs-link-dnd__header-module-1_hs_logo_widget" rel="noopener" style="border-width:0px;border:0px;"><img src="https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=153&amp;height=80&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png" class="hs-image-widget " height="80" style="height: auto;width:153px;border-width:0px;border:0px;" width="153" alt="Stormatics Logo (Transparent) Verion 2.0" title="Stormatics Logo (Transparent) Verion 2.0" loading="lazy" srcset="https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=77&amp;height=40&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 77w, https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=153&amp;height=80&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 153w, https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=230&amp;height=120&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 230w, https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=306&amp;height=160&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 306w, https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=383&amp;height=200&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 383w, https://resources.stormatics.tech/hs-fs/hubfs/Stormatics%20Logo%20(Transparent)%20Verion%202.0.png?width=459&amp;height=240&amp;name=Stormatics%20Logo%20(Transparent)%20Verion%202.0.png 459w" sizes="(max-width: 153px) 100vw, 153px"></a></span> </div> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> </div> </div> </div> <div class="container-fluid body-section compass__event--banner dark"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12"> <div class="row-fluid-wrapper row-depth-1 row-number-1 dnd__banner-row-0-hidden dnd__banner-row-0-background-color dnd__banner-row-0-background-layers dnd-section dnd__banner-row-0-padding dnd__banner-row-0-force-full-width-section dnd__banner-row-0-vertical-alignment"> <div class="row-fluid "> <div class="span12 widget-span widget-type-cell dnd__banner-column-1-vertical-alignment dnd__banner-column-1-padding dnd-column" style="" data-widget-type="cell" data-x="0" data-w="12"> <div class="row-fluid-wrapper row-depth-1 row-number-2 dnd-row"> <div class="row-fluid "> <div class="span12 widget-span widget-type-custom_widget dnd-module" style="" data-widget-type="custom_widget" data-x="0" data-w="12"> <div id="hs_cos_wrapper_dnd__banner-module-2" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-rich_text widget-type-rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><span id="hs_cos_wrapper_dnd__banner-module-2_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><p id="register-now" data-hs-anchor="true" style="font-weight: bold;">Success Story</p> <div data-id="4555292" data-element_type="widget" data-widget_type="heading.default"> <h1 style="font-size: 48px;"><span>Whop — Database Infrastructure Migration</span></h1> </div></span></div> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> <div class="row-fluid-wrapper row-depth-1 row-number-3 dnd-section dnd__banner-row-1-background-color dnd__banner-row-1-background-layers"> <div class="row-fluid "> <div class="span8 widget-span widget-type-cell dnd-column" style="" data-widget-type="cell" data-x="0" data-w="8"> <div class="row-fluid-wrapper row-depth-1 row-number-4 dnd-row"> <div class="row-fluid "> <div class="span12 widget-span widget-type-custom_widget dnd-module" style="" data-widget-type="custom_widget" data-x="0" data-w="12"> <div id="hs_cos_wrapper_widget_1712320816753" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><span id="hs_cos_wrapper_widget_1712320816753_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2><span style="color: #000000;">From Constraints to Expansion: Whop’s Database Infrastructure Migration to AWS with Stormatics</span></h2> <p><span style="color: #000000;">Whop serves as an online marketplace for creators, influencers, and businesses to sell subscriptions, communities, software, and other digital products. The USA-based platform provides an easy way for creators to monetize their business, brand, knowledge, or community with a recurring subscription model.&nbsp;</span></p> <p><span style="color: #000000;">After raising $17 million in a Series A round, Whop is now focused on scaling its business model with one goal: "Empowering everyone to be an internet entrepreneur."</span></p> <h2 style="font-size: 30px;"><span style="color: #000000;">A Migration Need</span></h2> <p><span style="color: #000000;">Whop was operating their PostgreSQL database on a Heroku cloud instance but needed to migrate their applications to AWS for mainly two reasons:</span></p> <ol style="font-size: 18px;"> <li style="color: #1d1c1d;" aria-level="1"><span style="color: #000000;">Heroku is falling behind the PostgreSQL community; while the current PostgreSQL version is 16.2, Heroku supports only version 15.</span></li> <li style="color: #1d1c1d;" aria-level="1"><span style="color: #000000;">It offers limited support for extensions and other ecosystem tools for PostgreSQL</span></li> </ol> <p><span style="color: #000000;">The migration task involved setting up a new replica outside the Heroku environment—a challenge, given Heroku's lack of support for external replication. Considering this predicament, they reached out to Stormatics for a migration solution to an AWS EC2 PostgreSQL instance with a scalable architecture and high availability with disaster management.</span></p> <h2 style="font-size: 30px;"><span style="color: #000000;">The Stormatics Solutions</span></h2> <p><span style="color: #000000;">The Stormatics team designed and implemented a resilient solution tailored to Whop's needs, including:</span></p> <ul> <li style="color: #434343;" aria-level="1"> <h3 style="font-size: 24px;"><span style="color: #000000;">PostgreSQL Migration from Heroku to EC2</span></h3> </li> </ul> <p style="padding-left: 40px;"><span style="color: #000000;">Heroku does not support built-in logical replication so the Stormatics team explored the method of deploying replication using the log shipping approach. Heroku utilizes the WAL-E tool for backups, storing them in an AWS S3 repository. The Stormatics team gained access to this repository and enabled the deployment of PostgreSQL as a read-only standby on EC2. The migration was completed in under <strong>10 minutes</strong> after verifying the database status and configuring parameters according to hardware requirements.</span></p> <ul> <li style="color: #434343;" aria-level="1"> <h3 style="font-size: 24px;"><span style="color: #000000;">High Availability</span></h3> </li> </ul> <p style="padding-left: 40px;"><span style="color: #000000;">A <strong>3-node cluster</strong> with manual failover was implemented using <strong>repmgr </strong>tool due to its robust and user-friendly streaming replication topology. The deployment included procedures for manual failover, failback, and the capability to follow a new primary for standby purposes.</span></p> <ul> <li style="color: #434343;" aria-level="1"> <h3 style="font-size: 24px;"><span style="color: #000000;">Backup and Recovery</span></h3> </li> </ul> <p style="padding-left: 40px;"><span style="color: #000000;">To handle backups, Stormatics deployed <strong>Barman</strong> to provide Whop with not only physical backups but also automated management of retention policies, compression, near-zero <strong>Recovery Point Objective (RPO)</strong>, and <strong>Point-in-Time Recovery (PITR)</strong>.</span></p> <ul> <li style="color: #434343;" aria-level="1"> <h3 style="font-size: 24px;"><span style="color: #000000;">Connection pooling</span></h3> </li> </ul> <p style="padding-left: 40px;"><span style="color: #000000;"><strong>pgbouncer </strong>tool was implemented for connection pooling, utilizing transaction pooling mode that resulted in reduction of the total active connections from <strong>150 to 50</strong> leading to enhanced resource utilization efficiency.&nbsp;</span></p> <h2 style="font-size: 30px;"><span style="color: #000000;">Way forward</span></h2> <p><span style="color: #000000;">With the successful migration from Heroku to AWS EC2, Whop is poised for exponential growth and scalability in the dynamic digital marketplace.</span></p> <p><span style="color: #000000;"><img src="https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=1920&amp;height=1080&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png" width="1920" height="1080" loading="lazy" alt="Success Story Whop’s Database Infrastructure Migration - Quotes " style="height: auto; max-width: 100%; width: 1920px;" srcset="https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=960&amp;height=540&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 960w, https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=1920&amp;height=1080&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 1920w, https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=2880&amp;height=1620&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 2880w, https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=3840&amp;height=2160&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 3840w, https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=4800&amp;height=2700&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 4800w, https://resources.stormatics.tech/hs-fs/hubfs/Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png?width=5760&amp;height=3240&amp;name=Success%20Story%20Whop%E2%80%99s%20Database%20Infrastructure%20Migration%20-%20Quotes%20.png 5760w" sizes="(max-width: 1920px) 100vw, 1920px"></span></p> <blockquote> <p><em><span style="color: #000000;">"Stormatics found a creative solution to our complex Heroku to AWS migration. They have proven to be a reliable partner and the expertise of their team greatly contributed to the seamless execution of a project tailored to our specific requirements. We enjoyed working with Stormatics and would not hesitate to recommend their services to anyone who needs help with PostgreSQL."</span></em></p> <p style="text-align: right; padding-left: 40px;"><span style="font-size: 16px; color: #1d1c1d; background-color: #f8f8f8;">Jack Sharkey&nbsp;</span></p> <p style="text-align: right; padding-left: 40px;"><span style="font-size: 16px; color: #1d1c1d; background-color: #f8f8f8;">Co-Founder and CTO at Whop</span></p> </blockquote> <p><span style="color: #000000;">Stormatics’ strategic partnership has not only enabled a smooth transition for Whop but also established a foundation for high availability and effective disaster management. This strategic switch positions Whop for sustained growth and scalability within the dynamic digital marketplace, all while being supported by a significantly enhanced and reliable infrastructure.</span></p> <h3><span style="color: #000000;">Why Stormatics?</span></h3> <p><span style="color: #000000;">Planning on enhancing your database performance? Our team of vendor-agnostic experts is ready to help. We provide bespoke performance-tuning services that are in line with your business requirements. Our packaged service includes:</span></p> <p><span style="color: #000000;">- Detailed analysis of the system<br>- Optimization recommendations based on usage patterns<br>- Time-limited engagement with quick-win implementation</span></p> <h3 style="font-weight: bold; font-size: 20px;"><span style="color: #000000;">We are your trusted PostgreSQL experts</span></h3> <p><span style="color: #134f5c;"><a href="https://stormatics.tech/contact-us" rel="noopener" target="_blank" style="color: #134f5c; text-decoration: underline; font-weight: bold;">Book a call with us today!</a></span></p></span></div> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> <div class="span4 widget-span widget-type-cell dnd-column" style="" data-widget-type="cell" data-x="8" data-w="4"> <div class="row-fluid-wrapper row-depth-1 row-number-5 dnd-row"> <div class="row-fluid "> <div class="span12 widget-span widget-type-custom_widget dnd-module" style="" data-widget-type="custom_widget" data-x="0" data-w="12"> <div id="hs_cos_wrapper_widget_1712320846650" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-form" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"> <span id="hs_cos_wrapper_widget_1712320846650_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_form" style="" data-hs-cos-general-type="widget" data-hs-cos-type="form"><h3 id="hs_cos_wrapper_widget_1712320846650_title" class="hs_cos_wrapper form-title" data-hs-cos-general-type="widget_field" data-hs-cos-type="text">Get the PDF Version</h3> <div id="hs_form_target_widget_1712320846650"></div> </span> </div> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> </div> </div> </div> <div class="container-fluid body-section compass__event--checklist light"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12"> </div><!--end widget-span --> </div> </div> </div> <div class="container-fluid body-section compass__event--experts dark"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12"> </div><!--end widget-span --> </div> </div> </div> <div class="container-fluid body-section compass__event--footer light"> <div class="row-fluid-wrapper"> <div class="row-fluid"> <div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12"> <div class="row-fluid-wrapper row-depth-1 row-number-1 dnd-section dnd__footer-row-0-padding dnd__footer-row-0-background-layers dnd__footer-row-0-background-color dnd__footer-row-0-max-width-section-centering"> <div class="row-fluid "> <div class="span12 widget-span widget-type-custom_widget dnd-module" style="" data-widget-type="custom_widget" data-x="0" data-w="12"> <div id="hs_cos_wrapper_widget_1712352899940" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="module"><span id="hs_cos_wrapper_widget_1712352899940_" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><footer id="colophon"> <div> <div> <div> <div> <div data-elementor-type="wp-post" data-elementor-id="2405"> <section data-id="1ce5f31" data-element_type="section" data-settings="{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}"> <div> <div data-id="dfcfefc" data-element_type="column"> <div> <div data-id="b209e5c" data-element_type="widget" data-widget_type="ct_text_editor.default"> <div> <div id="ct_text_editor-b209e5c" data-wow-delay="ms"> <div> <div> <p style="font-size: 12px; text-align: center;"><span style="color: #ffffff;"><strong>Stormatics</strong> | Our mission is to help businesses scale PostgreSQL reliably for critical data<br>All rights reserved | <a href="https://stormatics.tech/privacy-policy" rel="noopener" target="_blank" style="color: #ffffff;">Privacy Policy</a></span></p> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> </footer></span></div> </div><!--end widget-span --> </div><!--end row--> </div><!--end row-wrapper --> </div><!--end widget-span --> </div> </div> </div> </div> </div> </div> </div> <!-- HubSpot performance collection script --> <script defer src="/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js"></script> <script> var hsVars = hsVars || {}; hsVars['language'] = 'en'; </script> <script src="/hs/hsstatic/cos-i18n/static-1.53/bundles/project.js"></script> <!--[if lte IE 8]> <script charset="utf-8" src="https://js.hsforms.net/forms/v2-legacy.js"></script> <![endif]--> <script data-hs-allowed="true" src="/_hcms/forms/v2.js"></script> <script data-hs-allowed="true"> var options = { portalId: '40095450', formId: '1bcf5ba3-b7ad-4f5e-b47e-b5c4441854d1', formInstanceId: '4892', pageId: '166043305646', region: 'na1', pageName: "Whop Success Story \u2013 Database Infrastructure Migration to AWS", redirectUrl: "https:\/\/40095450.fs1.hubspotusercontent-na1.net\/hubfs\/40095450\/Case%20studies\/Whop%20-%20Success%20Story.pdf", css: '', target: '#hs_form_target_widget_1712320846650', contentType: "landing-page", formsBaseUrl: '/_hcms/forms/', formData: { cssClass: 'hs-form stacked hs-custom-form' } }; options.getExtraMetaDataBeforeSubmit = function() { var metadata = {}; if (hbspt.targetedContentMetadata) { var count = hbspt.targetedContentMetadata.length; var targetedContentData = []; for (var i = 0; i < count; i++) { var tc = hbspt.targetedContentMetadata[i]; if ( tc.length !== 3) { continue; } targetedContentData.push({ definitionId: tc[0], criterionId: tc[1], smartTypeId: tc[2] }); } metadata["targetedContentMetadata"] = JSON.stringify(targetedContentData); } return metadata; }; hbspt.forms.create(options); </script> <!-- Start of HubSpot Analytics Code --> <script type="text/javascript"> var _hsq = _hsq || []; _hsq.push(["setContentType", "landing-page"]); _hsq.push(["setCanonicalUrl", "https:\/\/resources.stormatics.tech\/whop-database-infrastructure-migration"]); _hsq.push(["setPageId", "166043305646"]); _hsq.push(["setContentMetadata", { "contentPageId": 166043305646, "legacyPageId": "166043305646", "contentFolderId": null, "contentGroupId": null, "abTestId": null, "languageVariantId": 166043305646, "languageCode": "en", }]); </script> <script type="text/javascript" id="hs-script-loader" async defer src="/hs/scriptloader/40095450.js"></script> <!-- End of HubSpot Analytics Code --> <script type="text/javascript"> var hsVars = { render_id: "49e18990-3221-4fa9-9d81-1a60f8bc44a6", ticks: 1741800636235, page_id: 166043305646, content_group_id: 0, portal_id: 40095450, app_hs_base_url: "https://app.hubspot.com", cp_hs_base_url: "https://cp.hubspot.com", language: "en", analytics_page_type: "landing-page", scp_content_type: "", analytics_page_id: "166043305646", category_id: 1, folder_id: 0, is_hubspot_user: false } </script> <script defer src="/hs/hsstatic/HubspotToolsMenu/static-1.432/js/index.js"></script> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10