└── README.md /README.md: -------------------------------------------------------------------------------- 1 | ### Full Stack Serverless 2 | 3 | Full Stack Serverless applications are applications that combine the following three things: 4 | 5 | 1. Decoupled frontends 6 | 2. Infrastructure as code 7 | 3. Serverless technologies for maximum scalability with minimum devops 8 | 9 | By combining serverless technologies with end to end full stack example applications and reference architectures, developers are able to pick up, replicate, deploy to the cloud, and iterate on sophisticated scalable cloud applications in a way that, in the past, was not possible to do or accessible for the majority of developers. 10 | 11 | Because many Serverless technologies like AWS Amplify, CDK, and the Serverless Framework (among others) are lowering the barrier to entry in building cloud applications with IAC (Infrastructure as Code), there is a new generation of traditionally front-end developers that can use their existing web and mobile skillset to build the types of applications that were traditionally out of their reach. 12 | 13 | When I say use their existing skillset, I'm assuming that the typical front end or full stack developer is familiar with the following: 14 | 15 | 1. JavaScript, TypeScript, or Python 16 | 2. Interacting with a CLI 17 | 3. A basic understanding of interacting with RESTful and / or GraphQL APIS 18 | 19 | Full Stack Serverlesss applications can be shared and deployed as an end to end project without much concern about the developer's local environment because all of the infrastructure is running in the cloud. They can be put down, shared, iterated on, and picked back up with ease. 20 | 21 | Back end infrastructure can be created and destroyed within only a few minutes enabling developers to not have to worry about incurring much development cost. Because the services are Serverless, whatever development costs incurred will be low anyway. 22 | 23 | #### The project 24 | 25 | The [Full Stack Serverless project](https://github.com/full-stack-Serverless) is meant as a place for developers to get started with Full Stack Serverless applications by providing a variety of full stack reference architectures. 26 | 27 | Applications need only to follow the three Full Stack Serverless criteria to be a part of this project. 28 | 29 | This project is cloud agnostic. Azure, GCP, AWS, and any other cloud provider is welcome as long as they follow the above 4 principles. 30 | 31 | Applications should be broken up into a front-end and back-end, with the following naming conventions: 32 | 33 | __Back end / IAC__: IAC_PROVIDER-APP_NAME (i.e. cdk-appsync-chat) 34 | 35 | __Front end__: FRAMEWORK_OR_PLATFORM-APP_NAME-CLOUD_INTEGRATION (i.e. react-chat-app-aws) 36 | 37 | #### Why Serverless 38 | 39 | Full Stack Serverless relies heavily on the Serverless philosophy for building out back end functionality. This means that the following are taken into consideration: 40 | 41 | 1. Developer velocity is valued above service ownership 42 | 2. Focus on creating business value vs re-inventing the wheel 43 | 3. Total cost of ownership should be understood at a fundamental level 44 | 4. Code is a liability 45 | 5. If it's available as a service, then it should never be built from scratch 46 | 6. Serverless functions fill in the gaps that managed services do not cover 47 | 48 | Research also suggests that cloud computing is becoming more and more Serverless, meaning that Serverless is more future-proof than Serverful. 49 | 50 | In [Cloud Programming Simplified: A Berkeley View on Serverless Computing](https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf), the predictions for the future of cloud computing were this: 51 | 52 | - We expect new BaaS storage services to be created that expand the types of applications that 53 | run well on Serverless computing. Such storage will match the performance of local block 54 | storage and come in ephemeral and durable variants. We will see much more heterogeneity of 55 | computer hardware for Serverless computing than the conventional x86 microprocessor that 56 | powers it today. 57 | - We expect Serverless computing to become simpler to program securely than Serverful computing, benefiting from the high level of programming abstraction and the fine-grained isolation 58 | of cloud functions. 59 | - We see no fundamental reason why the cost of Serverless computing should be higher than 60 | that of Serverful computing, so we predict that billing models will evolve so that almost 61 | any application, running at almost any scale, will cost no more and perhaps much less with 62 | Serverless computing. 63 | - The future of Serverful computing will be to facilitate BaaS. Applications that prove to be 64 | difficult to write on top of Serverless computing, such as OLTP databases or communication 65 | primitives such as queues, will likely be offered as part of a richer set of services from all cloud 66 | providers. 67 | - While Serverful cloud computing won’t disappear, the relative importance of that portion of 68 | the cloud will decline as Serverless computing overcomes its current limitations. 69 | - Serverless computing will become the default computing paradigm of the Cloud Era, largely 70 | replacing Serverful computing and thereby bringing closure to the Client-Server Era. 71 | 72 | In the above paper they redefined the term __Serverless__ to be this: 73 | 74 | > Put simply, Serverless computing = FaaS + BaaS. 75 | 76 | The definition of Serverless is no longer only Functions as a service, but now also encompasses backends as a service (Baas). 77 | 78 | In addition to the traditional advantages of Serverless technologies, there is another main reason why Serverless technologies are preferred over Serverful for this project: 79 | 80 | __Lower barrier to entry for traditionally non-back-end developers__ 81 | 82 | Because developers are leveraging managed services for functionality like authenticaiton and databases and not having to manage infrastruture, it is a lower barrier to entry for new developers than traditional Serverful cloud computing. --------------------------------------------------------------------------------