# Polygon SoW ## Roadmap ### Phase 1 **ETA: 1-1.5 month** 1 click node deploy on a Google GCP marketplace into Single VM Instance. Only one region is supported in this phase. * [Review and complete the open source compliance requirements](https://cloud.google.com/marketplace/docs/partners/open-source-compliance) * Set up Google Cloud environment * ~~Make solution for auto-create blockchain snapshots in Google Cloud Storage~~ We will use official snapshots * Build VM Image * Use [official ansible playbook](https://github.com/maticnetwork/node-ansible) * Render template based on user options (`sync_mode`, `sync_source`) * If `sync_archive == snapshot` - download & extract latest snapshot * Creating deployment package for Single VM Instance * Parameters * Deployment name * Zone * Machine type * Boot Disk * Networking * Firewall * Stackdriver (Logging, Monitoring) * Blockchain Sync mode: [`full`, `archive`] * Blockchain Sync source: [`snapshot`, `from_scratch` ***(only for `full`)***] * Outputs: * HTTP and WS endoints * ETA of full sync * Generate deployment package * Validate user parameters * Hardware requirements based on selected options * Test solution * Submit product to Marketplace * Create manual for a customer * Quick-start * Setup Load Balancer with SSL Termination * Get Metrics, Logs & troubleshooting PLEASE NOTE: Blockchain Node after deployment will have an endpoint WITHOUT ssl, as is usually the case with marketplace applications. The SSL setting is on the user side: [example from bitnami](https://docs.bitnami.com/google-templates/how-to/configure-lb-ssl-google-templates/) ### Phase 2 **ETA: 1-1.5 month** * Add support multiple regions * Monitoring of sync, alerts ### Phase 3(Optional) **ETA: 1-1.5 month** * Add GKE version of Marketplace product * Add scaling support ## Questions 1. (Devan) For each node type, disk configuration required during full sync -or- for serving end users? Attached local SSD required or is Persistent disk an option? ~~2. (Daniel) If you plan to sell software on Google Cloud Marketplace, please check [GCP Marketplace requirements](https://cloud.google.com/marketplace/docs/partners/get-started#requirements). Otherwise, we will have to offer it for free and use the Open Source model and match the [compliance](https://cloud.google.com/marketplace/docs/partners/open-source-compliance)~~ **Plan to use OpenSource model** ~~3. (Daniel) https cannot be configured at the stage of creating a VM from the marketplace. Usually, SSL termination is always given to the user's side, since there are a lot of ways that the user can do it - SSL at the reverse proxy level inside the node (with his own certificate or cert-manager), Load Balancer with a certificate from GCP or his own, external Load Balancer (such as CloudFlare) and so on. How exactly do you see HTTP enforce for http and ws endpoints? We recomend to ask user for create GCP Load Balancer with any SSL, [how bitname does it](https://docs.bitnami.com/google-templates/how-to/configure-lb-ssl-google-templates/)~~ **Plan to use SSL on user-space.** ~~4. (Daniel) What configuration options do we need to bring to the user's side? (`network_version` or `node_type`, for example)~~ Plan to use default configuration of node. ~~5. (Daniel) Do we want to use snapshots from https://matic-blockchain-snapshots.s3.amazonaws.com/matic-mainnet/ or do we need to develop our own solution? We want to take snapshots often, but we are not sure if you would like these snapshots to be publicly available for everyone, given the prices of traffic~~ **Plan to use official snapshots.** ## Links * [Original project description](https://docs.google.com/document/d/1BjOlYRXa9OKY9N_1SSYMBBImQ7h0ThJ3_dFvg373gww/edit) * [GCP Build VM image](https://cloud.google.com/marketplace/docs/partners/vm/build-vm-image) * [GCP Creating your deployment package](https://cloud.google.com/marketplace/docs/partners/vm/create-deployment-package) * [GCP Create Kubernetes Package](https://cloud.google.com/marketplace/docs/partners/kubernetes) * [Submit product to Marketplace](https://cloud.google.com/marketplace/docs/partners/vm/submitting) * [Marketplace tools](https://github.com/GoogleCloudPlatform/marketplace-tools) * [Custom Marketplace App params example](https://github.com/GoogleCloudPlatform/marketplace-tools/blob/master/examples/deployment-manager/autogen/singlevm/configurations.yaml#L62) * [Bitnami: configure LB SSL google templaes](https://docs.bitnami.com/google-templates/how-to/configure-lb-ssl-google-templates/)