9
64 Comments

Ask IH: PaaS for MVP?

It's really silly we waste so much time writing code for crud apps to build an mvp. Even using tools like aws, cognito, heroku, cloud spanner, dynamodb, lambda, rails, django etc. etc. etc. it's too much manual code. It's dumb and a waste of valuable time that could be used for sales and marketing.

Is there any paas out there where you just define some data models and it does 95% of the work for you, with a great security, ci/cd, a/b testing, performance, strong typing, ide debugging support, high availability, self healing story but you can still customize it fully? I've looked a lot and can't find anything.

  1. 3

    Hey David, it's still early days for us at Bullet Train, but this is ultimately something we'll make possible with our product. I actually had a customer point this out unprompted on a sales call the other day while demonstrating some of our code generation tools. "Wow, you're really not far from people being able to define their models in a spreadsheet and your script just generates the entire app."

    https://bullettrain.co/

    1. 1

      This is awesome.

    2. 1

      That looks very cool!

      1. 2

        Here's a video demo of the code generation feature that will combine with our other out-of-the-box features to produce something like what you were asking about: https://vimeo.com/244408440?1

        1. 1

          Oh nice! I like the idea of using context to improve the scaffolding. Does it generate forms for the frontend too, with ability to specify server side form validation rules?

  2. 3

    Hey @davidjnelson! We’re building exactly that over at https://base.run. Super early & would love your feedback - drop me an email at Nicolae@clay.run if you’re up for chatting more about what your ideal solution looks like :)

    1. 1

      Absolutely gorgeous design!

      I get that it's using postgres, and you can copy db tables, but not much else. I have essentially the same questions I had from someone else building something similar.

      Those were:

      I don't understand where the data is stored, or where the compute is run, what its availability, scalability and security properties are, how billing works, how to integrate with other services/plaftorms, what it's testing/deployment story is, or see a way to make a modern nice looking UI from the db tables.

      Cheers!

      1. 3

        Hey @davidjnelson thanks for the feedback :)

        We're working on adding examples and onboarding particularly around the how do you create nice modern looking UI from the tables. Currently you can use the NodeJS SDK here: https://base.run/docs/index.html , though more SDKs are on the way and easy integrations with popular frameworks.

        In terms of the other questions, we're hoping to update our docs & front-page to help people understand those aspects. Let me know if these answer your initial questions:

        • Data is stored in Postgres on AWS, and we're exploring Aurora under the hood as well for the future.
        • Compute using http://clay.run is currently operating on AWS Lambda, though we may eventually support fanning it out to other providers if you choose.
        • Scalability: On the storage side, we're focused on getting people started more easily, rather than ensuring scalability for very large data sets. With that said, Base will take you a very long way given how we've set it up and I think for most MVPs / basic CRUD projects will get you where you need.
        • Security: We'll do a write up around this in more depth, though this one is def important across the board - whether MVP or not.
        • Integrating Services & Platforms: Currently that's also done via the SDK
        • Testing & Deployment Story: It's a hosted service comparable to Firebase / MongoLab. One thing we've been thinking about is making it easy to spin up a dev version of your DB (which is similar to forking tables) so that you can quickly get going with that. We've always found it a pain to have to get a Dev environment that matches the prod environment setup, and to have adequate representative data etc.
        • Modern UI: We're making it easy to get going with several of the popular front-end & full-stack frameworks that are out there & we're thinking a lot about how to speed people getting their V1 out the door. Right now we're encouraging people to deploy to their own CDN, so we're not looking to be overly opinionated on how you build out your front-end. We've also worked on simplifying aspects of app building that happen often: e.g. User Auth https://base.run/docs/index.html#authentication & Sending Emails https://base.run/docs/index.html#emails.

        ...
        Appreciate any extra thoughts from the perspective of someone seeing it for the first time :)

        Thanks!

        1. 1

          Sure np! Awesome, thank you for the useful and detailed reply. Ya a common pain point certainly is the local dev experience, especially around making it dead simple to do step through debugging. I've often been the one who ends up setting this up at places I've worked, and I think from the perspective of a service provider this is a great place to add value as it has a huge productivity impact.

  3. 3

    Have you heard of graph.cool? I feel like they're doing exactly what you said. You define a model and baaam! you got a server. This is pretty opinionated since it's GraphQL based.

    1. 2

      I 2nd Graph.Cool. Defining the models is pretty much everything for a basic CRUD app

    2. 1

      Not usually a fan of baas, but this looks pretty neat. I wish they would explain more how it works under the hood though.

  4. 3

    Although I can't be of much help answering your original question, I'd like to through something else out there... Why write any code at all for an early MVP?

    We have been very successfully just putting a landing page together with some screenshots; this served as an excellent MVP and let to pre-orders and email subscribers pouring into the funnel. We have also seen founders do very well with front-end only MVP. It much easier to whack some HTML together to display how a product might end up working. This can then be used to do live walk-throughs, create videos, etc.

    IMO, writing back-end should be postponed as long as possible. In the ideal scenario, when you have actual money coming in. I realize this is not always easy or possible, but this is what I aim for.

    1. 1

      Your comment made me think about a saas product I had read about previously that makes landing pages ridiculously fast to create. I found it and hope it helps people who take this approach to market validation: https://www.leadpages.net/

    2. 1

      It always depends on the type of project. Definitely, you can run some MVP without any line of code. But many (maybe, most) of projects require some code to be written. For example, our project (friendly interface to a database in the cloud) can't be run without coding.

      Yes, we could create some screenshots too, but it wouldn't be an MVP. MVP is a product that does something useful, in minimal amount for the users.

      (BTW what you've done was not MVP either :)

      1. 1

        What we did was definitely MVP. I think you, as do many other entrepreneurs, are confusing MVP with a working prototype. An MVP does not necessarily means a working product; it simply refers to something, anything really, that allows you to test your assumptions.

        Keeping that in mind, MVP can be as simple as a landing page, some screenshots, even a phone call. The exact form your MVP takes is dictated by the assumption you're looking to test. A working prototype can be a MVP, however it should probably not be the first MVP in your validation process.

        To give an example related to your project, the friendly database interface, one of the first assumptions could have been something like this: "There's a significant number of people who do not like existing database interfaces". Now that you have your assumption, you can start putting together your MVP, which could be as simple as a number of interviews, or a survey you send out to a number of people. You can probably follow this procedure a bunch of times before getting into actual code. Let's say you have verified the first assumption, and possibly one or two more and it's now save to assume there are people out there interested in a more user friendly interface for databases. You can now start formulating assumptions related to the product itself, ie how things possibly should look. To verify these assumptions, your next MVP could be as simple as a number of design mockups of wireframes which you present to potential customers and collect feedback on.

        1. 1

          MVP means minimal valuable product. Landing page CAN NOT be an MVP as for it doesn't do anything valuable for users (in my case).

          1. 1

            An MVP is not meant to deliver value for your users. It 's only purpose is to test your assumptions. Even Erick Ries refers to a landing page as an MVP in his book (it's an awesome read, if you have't already definitely read it).

            MVP = the minimum amount of effort (product) needed to test your assumptions.

            Unfortunately, the true meaning of the concept is lost on many entrepreneurs these days and many people who are claiming to be building a MVP are in fact building "half a product".

            1. 3

              One thing I want to add here: the nature of your MVP will vary depending on what you are trying to test. If you're at the stage where you're trying to test if anybody is interested, a landing page may be that MVP. If you're trying to test a specific user flow, an MVP might have working software. It all depends on what stage you're at and what your desired learning is.

              I give a lot of workshops on product management and lean thinking (I'm a product management consultant masquerading as an Indie Hacker) and this is by far the most confusing thing for most people, especially at large enterprises. People tend to think of MVPs as "crappy versions of all the things," instead of the smallest viable chunk to test current assumptions. Keyword there is "current!"

              1. 1

                Well said and 100% accurate! Unfortunately, many starting entrepreneurs don't fully grasp the concept and dive right into coding a boiled down version the product. I guess it's the "Product" part in MVP that sets people off in the wrong direction. It's a shame really, as a lot of valuable time and money gets wasted this way :(

            2. 1

              He has a lot of examples in the book. The one I remember reading was the original IMVU app before the game which was actually a functioning chat app, which they then pivoted into the game later. I haven't read the book in a while, so I googled the origin story and think this quora post sums it up nicely: https://www.quora.com/Why-did-Eric-Reis-release-the-worst-prototype-possible-in-the-Lean-Start-up-with-IMVU

              Especially this part:

              "Several interesting observations came from the MVP. First, early adopters had no interest in connectivity between IMVU and current popular chat products. In fact, they had interest in none. They wanted to meet new people and also, if it was perceived as geeky, they did not want their current friends knowing. Second, when IMVU added a capability to move in a room virtually, you disappeared from one spot and appeared in your destination because they lacked time and money to navigate around objects in the room. It turned out users liked the speedy teleport capability over the more sophisticated (and expensive) movement.

              Think of lean and MVP as doing the minimum needed, lots of A/B testing, constant customer feedback, etc. By doing the minimum each time, one has money to support more experiments to find out what works and what does not."

              It doesn't need to be dogmatic though, different things work for different projects. I love hearing from other people what's worked from them. That's what's awesome about Indie Hackers.

              1. 1

                Oh absolutely! There's no hard and fast rule as to what constitutes a proper MVP. However, many people make the mistake in automatically assuming an MVP needs to be an actual product, which is simply not the case.

                An MVP can indeed be a simple/basic version of your final product, however it does not have to be. And this would typically be the case once you have successfully validated numerous assumptions.

    3. 1

      Yes this definitely works for many people. I've done it before as well.

  5. 3

    As great as that would be, it would also end up being pretty opinionated. For that reason it might make sense for you to build your own code generator that suits your style & languages.

    That could even be a business itself 🤔

    I have considered building a generator for GO which builds the structs, methods and routes based on models you define but I don't think thats something I would make public.

    1. 1

      It seems like a particularly good fit for people building mvp's, because at least in theory, those users would not care about the implementation as long as it got the job done. Now, whether software engineers could ever give up their existing mental models hahaha, ya I don't know.

      1. 1

        Yeah that depends on how complex the MVP should be. An MVP could be even just a video or a clickable prototype that doesn't have any logic.

        If you want to build one that actually has functionality, one could argue that it would be best to build it in such a way that you can extend it if it works and use it as a foundation instead of throwing it out and starting from 0 once you validated the MVP.

        1. 1

          MVP is debated a bit, but to me I use product not prototype for the P. Prototype certainly worked well for Dropbox and Buffer and I imagine countless other businesses. For me it comes down to "will this make money and validate assumptions". So many ways to look at it but I like the Eric Ries Lean Startup perspective as well as the cupcake instead of wedding cake perspective.

          I totally agree with you. It's not a ton more work to build something that won't have to be thrown out if you use a reasonable architecture.

          I guess what I'm saying is I'd like a low code platform tailored for building MVP's and it's annoying it doesn't exist. Maybe I should make one lol.

          1. 2

            Yeah, agreed. Thats why building your own will probably be your best bet.

            You could then open source it and find out if others agree with your design choices enough to contribute. Even if they don't you'll have a great starting point to build your MVPs faster.

            I think i'll do the same.

            1. 1

              Sweet! And if it takes off, you can sell add ons to the open source version, ie: open core.

    2. 1

      I like using go for it and having it opinionated. I think it would be a good fit for an open core business model.

  6. 3

    As amazing as that would be, I haven't stumbled upon anything like you're describing. Can you provide more detail about the technologies you've tried stringing together to mock this? I can help augment what you've already done to emulate this type of PaaS to improve your workflow. Some of what you're describing is outside the MVP scope. High Availability, CI/CD, and self-healing are incredibly nice to have but require significant technical planning to execute properly. Doing things that don't scale can help validate your idea before you even need to begin thinking about scaling. No need to solve problems you don't have yet in the MVP stage!

    1. 1

      This is slightly less expensive than mendix and also looks pretty good: https://www.outsystems.com

    2. 1

      This looks decent but it's geared for enterprises based on the high price point and inability to even try it out without a sales call. It also doesn't explain how it works.

      https://www.mendix.com/application-platform-as-a-service/

    3. 1

      Thanks Victor. API Gateway and Lambda using cloudformation abstracted via either the Serverless Application Model or Apex Up give me super easy high availability and self healing at the cost of poor 95th percentile latency. That's a trade off I don't love but am ok with for an mvp. CI/CD were super easy to set up using aws codestar, codebuild, and codepipeline.

      This is an ad tech product so even for the MVP it does need to scale as it will have a lot of traffic even with just a few customers.

      None of that is particularly difficult. The annoying part is it just feels dumb to write code even with an ORM to work with the db, writing code to interact with a saas identity provider API, writing html and javascript for forms, etc.

      1. 2

        Thanks for sharing the links. I'd need to learn more about those platforms before passing judgment. I figured based on your CRUD use case that you'd be exploring the serverless route! Still such a nascent ecosystem with a ton of potential. The SAM is in flux from my understanding. AWS is also still attempting to unify their serverless offerings into one cohesive ecosystem (https://docs.aws.amazon.com/serverlessrepo/latest/devguide/what-is-serverlessrepo.html, https://aws.amazon.com/blogs/aws/aws-cloud9-cloud-developer-environments/). I have extensive AWS experience and some experience with the Serverless framework as well. Feel free to reach out if you want to have a more in-depth conversation about that tech or have any questions. I agree with the general consensus of others offering input. There's a market to explore here, especially if you want to add best security practices into the mix.

        1. 1

          Here's a good report by Forrester on the 13 leading low code platforms. Many of them are targeted at software engineers looking to enhance productivity. It feels that their flexibility makes them a bit too complicated though. Seems like there's room for a "Rails philosophy for low code" which is opinionated and works for specific use cases such as secure, performant, scalable, responsive web apps devops, database, backend and frontend with customizable code that run on aws.

  7. 2

    Hey David,

    I'm actually working on this right now - I'm building out a low code platform with GUI tools that will allow you to rapidly build a MVP and then, export your code to a high quality react/redux codebase that you can take with you - no vendor lock in. If that sounds like something you'd be interested in, drop me a line at alex@beacon.studio.

    Cheers,
    Alex

    PS for anyone else, if this sounds like a tool you want to use feel free to drop me an email, or there's a release list signup on our pre-alpha site at https://beacon.studio.

    1. 1

      Very cool! Might be helpful to add some details to the release list signup page outlining the benefits of the product and how it works.

      1. 2

        Yeah that's definitely needed, I'm working with a designer on the branding at the mo and as soon as that's sorted I'll be setting up a better presence. I've not really started marketing yet as the product is just now nearing MVP readiness so messaging is next on the books.

  8. 2

    Your requirement for strong typing gave me an idea. What if the PaaS also "automatically" maintained your code?

    e.g. A new version of a library your code depends on gets released. The new version's API is not fully backwards-compatible; but is important as it fixes some security vulnerabilities. The platform would automatically update your calling code to use the API of the new version.

    By automatically, I mean by an experienced programmer, who goes through all apps on the PaaS which use the same library and updates them all. Strong typing would go a long ways towards making this possible. Similar to a developer within a large organisation grepping a monorepo, and updating code across different departments.

    p.s. I can think of many reasons this wouldn't work... But if all applications were written specifically for the PaaS. And the PaaS abided by some particular design decisions, it would totally be possible (and amazing!).

    1. 2

      Hey Levi,

      Great observation - I'm working on a platform for building out MVPs quickly and this is one of the features I'm working on. We're using regression testing to update dependency versions and ensure that the app still works after upgrading.

      Cheers,
      Alex

    2. 1

      Hmm, that sounds interesting, but I don't think I quite get it what you're proposing.
      "automatically" and "updates them all" sound like opposites to me. Do you mean the platform would auto update library dependencies and flag them using build output for manual fixing before being pushed to a staging env for testing?

      1. 2

        From your original description, I made the assumptions that:

        • Any code to "customize it fully" would be stored in the PaaS
        • The "strong typing" refers to property of the language used to make said customisations

        With these properties, the PaaS provider could presumably migrate the code of all the hosted applications as they evolve the platform and libraries (or even language). "Updates them all" being from the perspective of the PaaS operator; and "Automatically" being from the perspective of the application builders. Enabling the PaaS provider to iterate boldly without breaking applications.

        The "Keep Your Code in One Place" bit starting at 12m00s in this talk illustrates the idea: https://www.youtube.com/watch?v=_gmMJwjg0Pk

        1. 1

          Ah, gotcha! I see what you mean now.

  9. 2

    AppSync might be closer to what you want, as far as AWS goes though it's not the full picture, Firebase is probably the close match right now. I've been hacking on https://github.com/apex/up but it only really focuses on the deployment aspect for now.

    1. 1

      Hey TJ!

      Ya appsync does look really intriguing. Seems like it has a lot of promise. Would be cool if there was some tooling to abstract away the mapping templates.

      Apex Up is super dope. I switched from the aws serverless application model to up and highly recommend it to anyone who wants to deploy on lambda!!

  10. 2

    You are describing more or less our product CloudBackend :)

    We do offer for every project high-availability, automated backups, cloud database with a great db editor, serverless cloud functions that you can write in several languages (nodejs, python, go, c#, java, sql, visual sql), and more ...

    Please check here: https://cloudbackend.appdrag.com

    1. 1

      That is very cool! I love how you're providing a model driven approach without the $2,000/mo+ price tag, nice!

      I don't understand where the data is stored, or where the compute is run, what its availability, scalability and security properties are, how billing works, how to integrate with other services/plaftorms, what it's testing/deployment story is, or see a way to make a modern nice looking UI from the db tables. I read the marketing page, but didn't see those items mentioned.

      1. 3

        Data is store in S3 for files and in a cluster of Aurora for the DB part, Cloud functions are running on Lambda. Every project created on AppDrag get High-availability, automated backups in 3 regions, worldwide CDN (cloudfront). So your project is not just running in a shared VM or dedicated vm like other providers, your project is served by thousands of servers.

        Please check our white paper here:
        https://cf.appdrag.com/front/docs/AppDrag_White_Paper.pdf

        how billing works: we do have a free tier both for Cloud CMS & Cloud Backend. you can check our pricing here:
        https://appdrag.com/Personal-pricing.html
        https://appdrag.com/Cloud-Backend-pricing.html
        https://appdrag.com/Web-Professionals.html

        how to integrate with other services/plaftorms:
        for the CMS part, you can integrate with other services using javascript embed code or iframes: https://integrations.appdrag.com/

        for the Cloud Backend you can use NPM to quickly integrate with any other service providing a nodejs package, ... or you can use POST to call any other API out there

        Testing/Deployment: you can duplicate a whole app in a single click, including all files, database and the API functions. When you want to go public just press the publish button, then buy/transfer or connect a domain name to your app.

        We also have automated versioning, so you can preview & restore any file in a click.

        1. 2

          Wow, this is a dope platform! Any way you could put that stuff succinctly in the marketing page? I think that would help you a lot. Cheers!

          1. 1

            Yes thanks for the advice, we will update the marketing page :)

            1. 1

              Sure, np. Nice! Ya it looks like other people are getting confused too: https://www.indiehackers.com/forum/a45d7ce2f0?commentId=-L5aFdIDPtlTagNzdFvw

        2. 1

          Thanks again for the whitepaper. Your product is really impressive. Are you using serverless aurora for mysql? If using standard aurora, how do you deal with connection pooling in a stateless faas environment without performance or scalability issues?

          1. 1

            Thanks :)
            Serverless aurora is still in closed preview, AFAIK there is not even a public review on internet yet, so i guess no one received invitation yet. So for now we are using standard aurora. I expect that as soon as Aurora serverless is out, we will be able to activate this option on existing aurora instances to activate autoscaling.

            About the connection pooling, it's not an issue at all for us because
            it's done by our "WebFront" servers replacing AWS API Gateway, it's a lot simpler to use and is in an auto scaling group so we have zero issues related to scaling at peak hours :)

            1. 1

              oh that's awesome!!!!!! you got rid of api gateway, damn! api gateway is dog slow, I can't stand it. ah ok so you have containers or instances in an asg and the connection pooling runs on those right? that's badass if so. I am really liking your product!!

              1. 2

                yes indeed, our WebFront servers replacing API gateways are in ASG they are responsible for the connection pooling and they respond ways faster than API gateway and is inifitely easier to configure :)

  11. 1

    I'm surprised no-one has mentioned Bubble and Zeroqode. Check it out https://zeroqode.com - should be perfect for building your MVPs :)

  12. 1

    Looks like bullettrain and I are onto a similar idea.

    http://www.stacksimple.io --- a few more weeks, or months, away from launch. :/

  13. 1

    This comment was deleted 7 years ago

    1. 3

      Typescript as a language, very comfortable with it. Aws sam as a framework, brand new to it.

      Have you actually built mvp's in django or rails that customers paid you money for in 1-2 weeks?

      Doing things that don't scale is good advice, I like Paul Graham's essay on it. I'm certainly applying it in most places.

      That's dope Amy is making 7 figures - right on!

      1. 1

        This comment was deleted 7 years ago

        1. 1

          I think that would be cool. I consider security and performance to be part of the viable in MVP though. For most use cases scalability is not, but for some it is. If I'm going to write code I want it to be statically typed though, that's a downside to python. Type hinting looks useful though. I've only built 4 python production projects, and those were 8-9 years ago.