<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ScaleChamp</title>
    <description>The latest articles on DEV Community by ScaleChamp (@scalechamp).</description>
    <link>https://dev.to/scalechamp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2657%2Fd49c8e9b-676e-4571-a051-886bd61459ef.png</url>
      <title>DEV Community: ScaleChamp</title>
      <link>https://dev.to/scalechamp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scalechamp"/>
    <language>en</language>
    <item>
      <title>Connect to ScaleChamp Managed PostgreSQL with SQLAlchemy</title>
      <dc:creator>Mike Faraponov</dc:creator>
      <pubDate>Sat, 10 Oct 2020 12:19:47 +0000</pubDate>
      <link>https://dev.to/scalechamp/connect-to-scalechamp-managed-postgresql-with-sqlalchemy-ebl</link>
      <guid>https://dev.to/scalechamp/connect-to-scalechamp-managed-postgresql-with-sqlalchemy-ebl</guid>
      <description>&lt;p&gt;Create database instance in &lt;a href="https://cloud.scalechamp.com/"&gt;Control Panel&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Select service, cloud, region:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--endCKRox--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d8ml1l34hu92oq54toab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--endCKRox--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d8ml1l34hu92oq54toab.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select plan:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F_6BXBdd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sdtjldy8tt7cbcyplemi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F_6BXBdd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sdtjldy8tt7cbcyplemi.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait until instance will be in RUNNING state:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iM7nYQ-i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xxiipn8067ktru1nl62h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iM7nYQ-i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xxiipn8067ktru1nl62h.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then connect to it from your python application:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sqlalchemy&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;create_engine&lt;/span&gt;

&lt;span class="n"&gt;conn_args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;"sslmode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"verify-full"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"sslrootcert"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;path to your ca.pem downloaded from UI&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;engine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;create_engine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"postgresql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@&amp;lt;hostname&amp;gt;:5432/ssndb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connect_args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conn_args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To make sure no one can gain access to your database accept allowlisted IPs checkout firewalls section.&lt;br&gt;
Voa'la. See you at &lt;a href="https://www.scalechamp.com"&gt;ScaleChamp&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sqlalchemy</category>
      <category>postgres</category>
      <category>tls</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Failover Proxy</title>
      <dc:creator>Mike Faraponov</dc:creator>
      <pubDate>Tue, 29 Sep 2020 19:39:39 +0000</pubDate>
      <link>https://dev.to/scalechamp/failover-proxy-6o2</link>
      <guid>https://dev.to/scalechamp/failover-proxy-6o2</guid>
      <description>&lt;p&gt;In case you ever think about failover proxy solution to migrate database from one server to another, consider failover proxy script, no need for HA Proxy at least for TCP based services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

iptables &lt;span class="nt"&gt;-t&lt;/span&gt; nat &lt;span class="nt"&gt;-A&lt;/span&gt; PREROUTING &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; &lt;span class="nv"&gt;$PORT&lt;/span&gt; &lt;span class="nt"&gt;-j&lt;/span&gt; DNAT &lt;span class="nt"&gt;--to-destination&lt;/span&gt; &lt;span class="nv"&gt;$TARGET&lt;/span&gt;:&lt;span class="nv"&gt;$PORT&lt;/span&gt;
iptables &lt;span class="nt"&gt;-t&lt;/span&gt; nat &lt;span class="nt"&gt;-A&lt;/span&gt; POSTROUTING &lt;span class="nt"&gt;-j&lt;/span&gt; MASQUERADE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We at &lt;a href="https://www.scalechamp.com/"&gt;ScaleChamp&lt;/a&gt; utilising Failover Proxy to reduce downtime until DNS propagates to new master server.&lt;/p&gt;

&lt;p&gt;While this solution do not provide session support and may require some retries for transactions on application level, it's still a simple and universal solution for many use cases. &lt;/p&gt;

&lt;p&gt;P.S.&lt;br&gt;
Do not forget to enable ip forwarding via sysctl. Also in order to archive atomical iptables update consider ip namespaces (netns).&lt;/p&gt;

</description>
      <category>iptables</category>
      <category>linux</category>
      <category>database</category>
      <category>bash</category>
    </item>
    <item>
      <title>ScaleChamp Redis Maxmemory-policy</title>
      <dc:creator>Mike Faraponov</dc:creator>
      <pubDate>Sun, 19 Jul 2020 12:13:26 +0000</pubDate>
      <link>https://dev.to/scalechamp/scalechamp-redis-maxmemory-policy-46ep</link>
      <guid>https://dev.to/scalechamp/scalechamp-redis-maxmemory-policy-46ep</guid>
      <description>&lt;p&gt;Happy to announce that ScaleChamp Redis/KeyDB/KeyDB PRO now support maxmemory-policy modification via Control Panel&lt;/p&gt;

&lt;p&gt;More at &lt;a href="https://www.scalechamp.com/changelog/"&gt;https://www.scalechamp.com/changelog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nBc0ySzV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e04rxv4cu6f3mwj6dvr6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nBc0ySzV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e04rxv4cu6f3mwj6dvr6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>scalechamp</category>
      <category>redis</category>
      <category>keydb</category>
      <category>keydbpro</category>
    </item>
    <item>
      <title>ScaleChamp Changelog</title>
      <dc:creator>Mike Faraponov</dc:creator>
      <pubDate>Fri, 17 Jul 2020 16:48:16 +0000</pubDate>
      <link>https://dev.to/scalechamp/scalechamp-changelog-404n</link>
      <guid>https://dev.to/scalechamp/scalechamp-changelog-404n</guid>
      <description>&lt;p&gt;We happy to announce that we published our first changelog announcements at &lt;a href="https://www.scalechamp.com/changelog/"&gt;Changelog Page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tools/scalechamp"&gt;ScaleChamp&lt;/a&gt; now available under DigitalOcean tools.&lt;/p&gt;

</description>
      <category>redis</category>
      <category>dbaas</category>
      <category>changelog</category>
      <category>postgres</category>
    </item>
    <item>
      <title>ScaleChamp</title>
      <dc:creator>Mike Faraponov</dc:creator>
      <pubDate>Thu, 09 Jul 2020 20:38:38 +0000</pubDate>
      <link>https://dev.to/scalechamp/scalechamp-56ho</link>
      <guid>https://dev.to/scalechamp/scalechamp-56ho</guid>
      <description>&lt;p&gt;Just want you to know that there is a &lt;a href="https://www.scalechamp.com" rel="noopener noreferrer"&gt;ScaleChamp&lt;/a&gt; Managed Databases available.&lt;/p&gt;

&lt;p&gt;ScaleChamp is a multi-cloud victorious managed databases provided with support of PostgreSQL, MySQL, KeyDB, KeyDB PRO and many more choices.&lt;/p&gt;

&lt;p&gt;Just select a service, cloud (from 11 available), region/AZ and choose preferred configuration and you are ready to go!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/eN8nYMaunsU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1282663571571314688-143" src="https://platform.twitter.com/embed/Tweet.html?id=1282663571571314688"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1282663571571314688-143');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1282663571571314688&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>dbaas</category>
      <category>mysql</category>
      <category>redis</category>
      <category>postgres</category>
    </item>
  </channel>
</rss>
