It's similar but we think it improves upon cloud code in a couple of ways. We designed logic after techniques that we use internally to create robust, yet maintainable GraphQL resolvers. Mainly that means we structure each resolver as a composition of functions. This means that the functions in the composition associated with the mutation are able to pass information down the chain giving you a lot of flexibility in how you implement features with microservices. Another distinction from cloud code is that you can use virtually any stack. You can host logic using a full fledged web framework like Rails or you can use new serverless services like lambda. This also gives a lot of flexibility and lets you reuse existing infrastructure if you have it. The comparison is a fair one but we still have a few features in store that will keep building on the functionality and hopefully make the distinction more apparent :)