<?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: Igor Zalutski</title>
    <description>The latest articles on DEV Community by Igor Zalutski (@zij).</description>
    <link>https://dev.to/zij</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%2Fuser%2Fprofile_image%2F561057%2Fd91d692d-1deb-4581-a0fe-87278e3e125d.jpeg</url>
      <title>DEV Community: Igor Zalutski</title>
      <link>https://dev.to/zij</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zij"/>
    <language>en</language>
    <item>
      <title>I built a tool that analyses your code and configures AWS to run it</title>
      <dc:creator>Igor Zalutski</dc:creator>
      <pubDate>Thu, 16 Jun 2022 14:35:03 +0000</pubDate>
      <link>https://dev.to/zij/i-built-a-tool-that-analyses-your-code-and-configures-aws-to-run-it-43il</link>
      <guid>https://dev.to/zij/i-built-a-tool-that-analyses-your-code-and-configures-aws-to-run-it-43il</guid>
      <description>&lt;p&gt;Here it is: &lt;a href="https://flywheel.sh"&gt;flywheel.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost 2 years ago my cofounder and I started building Digger. It took us a year, and last summer we have finally shown it to the world. We launched Digger quite successfully on ProductHunt as well as and on HackerNews. But it wasn’t instant product-market fit we hoped for. More like, different people were using Digger for different reasons.&lt;/p&gt;

&lt;p&gt;Then we launched a few follow-up products with more focused value propositions like UI (Lemon), or multi-cloud (Alicorn), or databases (Hippobase). We learned a lot from the early adopters (thank you!!). The biggest learning was that we were trying to solve too many problems at once, and that confused our users a great deal.&lt;/p&gt;

&lt;p&gt;So we went back to the drawing board. We have radically simplified the UI, especially onboarding. We asked ourselves - what is the one thing our users care about most? And we started launching what we thought were features as separate products. Some of them flopped (remember Serverful?) - and so we killed the feature. Others succeeded, like one-click sample app setup (AWS Bootstrap) and most recently Terragen that automatically generates infrastructure-as-code.&lt;/p&gt;

&lt;p&gt;And then we wondered: is there something in common with the products that were received warmly? Turns out, there is - speed. In hindsight it is obvious that speed matters a great deal. Because it is not uncommon to spend more time on setting up AWS infrastructure for your app than building the app itself.&lt;/p&gt;

&lt;p&gt;Then we thought, what would the fastest developer experience with AWS infrastructure look like? Making each step as fast as possible seemed like a good start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;the fastest way to get the code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the fastest way to determine what infrastructure is needed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the fastest way to provision that infrastructure on AWS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.#1 can be solved by one-click Github repository connection, like in Vercel. It doesn’t get much faster than that&lt;/p&gt;

&lt;p&gt;.#3 can be solved by generating and running Terraform (this is what Terragen does)&lt;/p&gt;

&lt;p&gt;.#2 presents the biggest challenge. How do we know what kind of infrastructure is needed?&lt;/p&gt;

&lt;p&gt;After a great deal of not making much progress we realised something: all the information is already in the code! Because if you show your app to a DevOps engineer they wouldn’t need to ask many questions, they would just see the code and instantly know whether it’s a front-end (then it would require an S3 bucket and a CDN) or a back-end or a lambda function.&lt;/p&gt;

&lt;p&gt;We can easily detect the language and the framework, Dockerfile, lambda handler, read package.json, things like that. Then we can feed it into the Terraform generator, then run terraform apply on our servers against user’s AWS account. This makes the entire flow completely seamless: connect your github repo → connect your AWS account → click “Deploy”. As simple as that.&lt;/p&gt;

&lt;p&gt;And this is &lt;a href="https://flywheel.sh"&gt;Flywheel&lt;/a&gt;. Give it a try!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Digger.dev: A new kind of PaaS</title>
      <dc:creator>Igor Zalutski</dc:creator>
      <pubDate>Wed, 21 Jul 2021 17:57:36 +0000</pubDate>
      <link>https://dev.to/zij/digger-dev-a-new-kind-of-paas-2dk</link>
      <guid>https://dev.to/zij/digger-dev-a-new-kind-of-paas-2dk</guid>
      <description>&lt;p&gt;&lt;a href="https://news.ycombinator.com/show"&gt;We've just launched on HackerNews&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Say you want to deploy a Node app. Or a Python app. Or a Rails app. And maybe one or two React or Vue frontends as well. Oh and a database too.&lt;/p&gt;

&lt;p&gt;You have 2 options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Traditional PaaS like Heroku. Going to be quick and easy. But also expensive and you can't build much beyond the very basics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS or GCP or Azure. That's going to be hard and slow, unless you have DevOps expertise. But with over 200 services you can build pretty much anything.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why isn't there an easy way to start on AWS without spending days figuring it out? We thought so as well, and built Digger.dev&lt;/p&gt;

&lt;h2&gt;
  
  
  Digger makes AWS simple
&lt;/h2&gt;

&lt;p&gt;It automatically generates infrastructure for your code in your AWS account. So you can build on AWS without having to deal with its complexity. See How it works&lt;/p&gt;

&lt;p&gt;You can launch in minutes – no need to build from scratch, or even think of infrastructure at all&lt;/p&gt;

&lt;p&gt;✅ Easy to use Web UI + powerful CLI&lt;br&gt;
✅ Deploy webapps, serverless functions and databases: just connect GitHub repositories&lt;br&gt;
✅ Multiple environments: replicate your entire stack in a few clicks. Dev / staging / production; short-lived for testing; per-customer&lt;br&gt;
✅ Zero-configuration CI with GitOps: pick a branch for each environment and your services will be deployed on every git push&lt;br&gt;
✅ Logs, environment variables, secrets, domains: never touch AWS again!&lt;/p&gt;

&lt;h2&gt;
  
  
  A PaaS that generates Terraform
&lt;/h2&gt;

&lt;p&gt;... So that you keep the full power of AWS&lt;/p&gt;

&lt;p&gt;Traditional platforms-as-a-service (PaaS) like Heroku or Vercel run your code on their servers. Digger takes a different approach: it generates infrastructure-as-code (Terraform) that manages your AWS account. See Digger vs Ohter&lt;/p&gt;

&lt;p&gt;This removes the main limitation of traditional PaaS. With Digger you can have great modern developer experience and get a future-proof stack at the same time. Terraform is industry standard for all things DevOps; with Digger you can customise every bit. You can even use your own bespoke templates with Digger. So unlike traditional PaaS, you never outgrow Digger.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do you think?
&lt;/h2&gt;

&lt;p&gt;We've just launched and super hungry for feedback. &lt;a href="https://digger.dev"&gt;Try it out&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>python</category>
      <category>aws</category>
      <category>devops</category>
    </item>
    <item>
      <title>Tools you love vs tools you use at work</title>
      <dc:creator>Igor Zalutski</dc:creator>
      <pubDate>Fri, 09 Jul 2021 01:08:37 +0000</pubDate>
      <link>https://dev.to/zij/tools-you-love-vs-tools-you-use-at-work-1ok6</link>
      <guid>https://dev.to/zij/tools-you-love-vs-tools-you-use-at-work-1ok6</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xu4b4u95lf20mnztrli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xu4b4u95lf20mnztrli.png" alt="Tools you love: Vercel, Heroku, Firebase, Netlify. Tools you use at work: AWS, GCP, Azure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Something weird is going on. On the one hand, there are amazing tools out there that allow you to build applications quickly without thinking of infrastructure. Tools like Vercel, Heroku, Firebase, Netlify. On the other hand, most teams keep building on AWS or GCP, seemingly ignoring these amazing tools for all but the smallest of projects. How come? Aren’t we all supposed to be serverless by now?&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost of great developer experience
&lt;/h2&gt;

&lt;p&gt;What makes Vercel and Heroku amazing is simplicity. Just connect a repo (or push your code) and see it live in a few seconds. Perfection! It just works. How? You’re not supposed to think about that, it’s been handled by the platform.&lt;/p&gt;

&lt;p&gt;That’s all great, until you need a bit more than a PaaS can offer. Things like block storage for example, or private networking, or pub-sub, or a specific kind of a database. There are many of them, you know - not just relational. And there is a reason why each exists.&lt;/p&gt;

&lt;p&gt;But building such a stack now presents a problem. Your apps work just fine on a PaaS; you only need one extra piece that can be built say on AWS. So you end up spreading your stack across multiple providers. Frontends are running on Netlify, backends on Heroku, databases on AWS. All over public network of course. And then there is a problem of latencies and multi-region setups. Things got to be close to each other to be fast, but there aren’t that many regions to choose from on a PaaS. The only option now seems to be to move to AWS (or GCP).&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost of great flexibility
&lt;/h2&gt;

&lt;p&gt;This migration of course could have been avoided altogether if you had started on AWS right away. Maybe the developer experience is not that great, but then at least you can be sure that your future needs are covered. In fact most startups do just that – and Amazon as well as Google and Microsoft are happy to extend generous free credits to them.&lt;/p&gt;

&lt;p&gt;At this point startups are split in two distinct groups: those who have DevOps expertise, and those who don’t. The former are doing alright, perhaps moving a bit slower, but just a bit. They get their developer infrastructure in place rather quickly, set up CI / CD pipelines, and start shipping. That group is a minority though, roughly 10-15% of all startups. The remaining 90% don’t have in-house DevOps expertise. And that’s where it becomes really painful.&lt;/p&gt;

&lt;p&gt;AWS has over 200 services. Say you’re building a simple web app with a backend, frontend, and database. Should you deploy it into EC2? Or ECS? Or EKS? Or Lambda? Or Fargate? Or Beanstalk? What’s a VPC? How do I make my service public? And so on. It’s not clear at all. And so those unfortunate teams without DevOps expertise can either move slow by trial and error, or hire a DevOps engineer. Which to a startup is a tough decision with consequences. This essentially means hiring one less engineer to work on the product…&lt;/p&gt;

&lt;h2&gt;
  
  
  But what about infrastructure as code?
&lt;/h2&gt;

&lt;p&gt;It’s great. Terraform is a de-facto standard for DevOps work, other tools like are either niche (Pulumi) or badly designed (CloudFormation). But infra-as-code does not solve this dilemma. But you still need to think in the exact same terms as without tools. So they aren’t making it any simpler – they are solving a different problem (infrastructure consistency). Present-day IaC tools are a bit like assembly language: total precision, zero abstraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  There must be a better way
&lt;/h2&gt;

&lt;p&gt;Just imagine if building mobile apps was like that. To start building an app you use one combination of IDE, language and toolchain. Then when it matures you rebuild the whole thing in a different language, with a different IDE, using a different toolchain. Ridiculous, isn’t it?&lt;/p&gt;

&lt;p&gt;So can we not somehow combine the developer experience of tools like Vercel with flexibility of major cloud providers? So you could start small, move fast with reasonable defaults, then add customisation without the need to rebuild from scratch? Wouldn’t that be… normal?&lt;/p&gt;

&lt;p&gt;That’s what we thought – and built Digger.dev. It automatically generates infrastructure for your code in your AWS account. It has a nice web UI so you can deploy your apps and services in a couple clicks. But under the hood is Terraform. So when time comes you can customise or even completely replace it. But only if you need to.&lt;/p&gt;

&lt;p&gt;We have just &lt;a href="https://www.producthunt.com/posts/digger" rel="noopener noreferrer"&gt;launched and hungry for feedback - check it out&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>javascript</category>
      <category>heroku</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
