Salesforce introduced Evergreen at Dreamforce 2019. It came as a surprise announcement (in a good way) since I was expecting the focus to be on Lightning Web Components (LWC). Evergreen introduces a completely new platform and paradigm to build applications on the Salesforce platform.

If you know me, you'll know that I'm a huge proponent of the Salesforce platform. I've been working on the platform when it was just a CRM application, so I've seen the evolution of the platform from its humble Apex/Visualforce roots to the current magnificent LWC manifestation (which I also believe is a superior step forward). So when I heard about Evergreen, I felt like I was transported back to 2008 when platform was launched. I believe that Evergreen will transform the way we build apps on Salesforce.

What is Evergreeen?

From salesforce blog post

Salesforce Evergreen — a new addition to the Customer 360 Platform that brings in serverless functions based on fully-managed Kubernetes, support for open programming languages and commonly used high-performance data stores.

The blog post announcement implies that Evergreen opens up new avenues and patterns to build applications:

- Functions as a Service (briefly described above)

- Microservices (you can find my blog post about microservices here)

- Managed data stores to store relational (Postgres) or key-value data (Redis) to build data pipelines and streaming apps

The coolest part is that you can use Java, Javscript (Nodejs to be specific) and Apex to build these functions/services. Also you pay for what you use i.e. when it’s idle it consumes no resources. With Nodejs you can potentially exploit the entire npm ecosystem to build interesting services.

I like to think of Evergreen as AWS Lambda on steroids. It comes out of the box with better integration with Lightning platform allowing us to create large scale, highly performant architecture. You can start to think big possibly without worrying about the platform limits.

In this post I want to take a gander at some of the future possibilities with Salesforce Evergreen:

  1. Salesforce Lightning platform has great many options to integrate with external system except FTP for e.g. you cannot directly send a CSV file to an FTP location. There are app exchange apps but they send data through their servers which may or may not be acceptable depending on the regulation you may have to follow. You should be able to connect to an FTP folder via a service deployed on Evergreen and send data from Salesforce.
  2. Building Machine Learning solutions on top of Salesforce will become even easier if we have access to Java and/or Nodejs toolkits that can interact directly with data in Salesforce.
  3. You could build dynamic complex large pdf documents (this was actually demo'ed at DF 2019) at scale. The current out of the box Visualforce 'save as pdf' has limitations - the pdf rendering engine doesn't support css3 and custom fonts. With evergreen, you can use one of the advance pdf libraries in java and javascript to design and build a scalable doc/pdf-gen solution.
  4. Perform heavy duty calculations or processing off lightning platform. This is where I believe the likes of Salesforce CPQ can harness the power of Evergreen infrastructure to to offload large, complicated, multidimensional calculations and not be hindered by the multi-tenant platform limitations.
  5. You can start building interesting notification and incident montioring based architecture with notification services built on top of Evergreen.
  6. For an IoT project, you could use Evergreens high performant key value databases like Redis along with event based Kafka to store and process huge volumes of IoT data.
  7. Finally, with a combination of Platform events and Evergreen with Kafka you can build an event based architecture that should satisfy any and all of your enterprise message queue requirements.

All of the above is pure speculation, there might be a few limitations which we will discover as the platform moves out of developer beta.

Thanks for taking the time to read this post, if you found it useful and if you have any comments or more tips, please hit me up on twitter (@anup)