Mais conteúdo relacionado Semelhante a StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Cloud Platform (20) StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Cloud Platform1. 1 | xpon.ai © 2021 XPON Technologies Pty Ltd
A Cloud Native Approach
to running Silverstripe on
Google Cloud Platform
XPON Technologies
Virtual StripeCon Europe 2021
2. 2 | xpon.ai © 2021 XPON Technologies AU/NZ
@jkersu
@jonathonsu
$whoami
@jker_su
Jon Su
pending….
4. 4 | xpon.ai © 2021 XPON Technologies AU/NZ
XPON is a
technology
company
for the next generation
of marketing and
customer experience
(CX).
An era that is richly immersive,
powered by data and made intelligent
with AI.
5. 5 | xpon.ai © 2021 XPON Technologies AU/NZ
Today’s Talk
A Cloud-Native Approach to running Silverstripe
on Google Cloud Platform
6. 6 | xpon.ai © 2021 XPON Technologies AU/NZ
Overview
1. A Bit of History
2. What is Cloud Native?
3. Integrating Silverstripe and GCP
4. Other things to know...
7. 7 | xpon.ai © 2021 XPON Technologies AU/NZ
Prerequisites
● A basic working Silverstripe 4 project
● GCP Account (because we’re using GCP)
● No infrastructure background required
8. 8 | xpon.ai © 2021 XPON Technologies AU/NZ
A Bit of History
9. 9 | xpon.ai © 2021 XPON Technologies AU/NZ
How hosting used to be done
10. 10 | xpon.ai © 2021 XPON Technologies AU/NZ
Some Problems
● Medium-Sized and Enterprise Projects
● Uptime Guarantee
● Security
● Resource Hogging Applications == Crash!
● Cost vs Scalability
11. 11 | xpon.ai © 2021 XPON Technologies AU/NZ
Deployment
Quick Deployment != Quick Rollback
12. 12 | xpon.ai © 2021 XPON Technologies AU/NZ
Managed Hosting Services
● Have a professional supporting you is great! But…
○ Reliance on 3rd party to install software
packages
○ Cost / Fees
○ Support response time
○ Self-Hosting - Lot of maintenance work
13. 13 | xpon.ai © 2021 XPON Technologies AU/NZ
The Checklist
● Simple but scalable infrastructure
● Robust deployment and rollback
● Most importantly Self-Service
● Backups, Monitoring and Logging
14. 14 | xpon.ai © 2021 XPON Technologies AU/NZ
What is Cloud Native?
An approach in software development that
utilizes cloud computing to “build and run
scalable applications in modern, dynamic
environments such as public, private and hybrid
clouds”.
“
15. 15 | xpon.ai © 2021 XPON Technologies AU/NZ
Serverless
Cloud Native
Fully
Managed Services
Buzzy
Keywords
17. 17 | xpon.ai © 2021 XPON Technologies AU/NZ
Fully Managed Services
● Focus on using a service, not setting it up
● No server / infrastructure management
● Cloud Provider has your back:
○ Hardware Configuration
○ Scaling
○ Maintenance
○ Security Patches
18. 18 | xpon.ai © 2021 XPON Technologies AU/NZ
What is Cloud Native?
● Automation
● Stateless Components
● Managed Services
● Components are separate but integrate with
each other
● Only Constant is Change
19. 19 | xpon.ai © 2021 XPON Technologies AU/NZ
Covers the entire Digital Customer
Experience journey from App
Modernisation to Cloud Martech and
Adtech in the one Cloud.
Why
GCP?
21. 21 | xpon.ai © 2021 XPON Technologies AU/NZ
Integrating
Silverstripe
with GCP
MVP Approach
22. 22 | xpon.ai © 2021 XPON Technologies AU/NZ
3 Key Services
Assets
Database
Server
23. 23 | xpon.ai © 2021 XPON Technologies AU/NZ
GCP Architecture
24. 24 | xpon.ai © 2021 XPON Technologies AU/NZ
Cloud Storage
● Equivalent to AWS S3 Bucket
● Objects - files, images, video etc
● Priced for storage (duration), network etc
operations
25. 25 | xpon.ai © 2021 XPON Technologies AU/NZ
Setting up Cloud Storage
● Create Bucket
● Create 2 new folders:
○ public/
○ protected/
● New Service Account
○ Give appropriate permission to read/write
26. 26 | xpon.ai © 2021 XPON Technologies AU/NZ
Setting up Cloud Storage
27. 27 | xpon.ai © 2021 XPON Technologies AU/NZ
Configure Silverstripe with Cloud Storage
● Install module: https://github.com/obj63mc/silverstripe-google-
cloud-storage
● Change access for /public and /protected as per repo docs
● Environment variables:
○ GC_BUCKET_NAME
○ GC_KEY_FILE: Service Account JSON string
28. 28 | xpon.ai © 2021 XPON Technologies AU/NZ
Cloud SQL
● Fully Managed Database Service
● MySQL, PostgreSQL, SQL Server
● Failover, replication and backups
● 99.95% uptime - 43s per day
● CPU / RAM / Storage / Networking Pricing
29. 29 | xpon.ai © 2021 XPON Technologies AU/NZ
Alternative
Run a database on a virtual machine
Bad Idea!
30. 30 | xpon.ai © 2021 XPON Technologies AU/NZ
Cloud SQL Auth Proxy
31. 31 | xpon.ai © 2021 XPON Technologies AU/NZ
1. Enable Cloud SQL API
2. Create Cloud SQL instance
3. Create a database
4. Create a database user
5. Connect Silverstripe with Cloud SQL
Setting up
Cloud SQL
33. 33 | xpon.ai © 2021 XPON Technologies AU/NZ
Create Cloud SQL instance
34. 34 | xpon.ai © 2021 XPON Technologies AU/NZ
Create a database
35. 35 | xpon.ai © 2021 XPON Technologies AU/NZ
Create a database user
36. 36 | xpon.ai © 2021 XPON Technologies AU/NZ
Remember the Connection name
37. 37 | xpon.ai © 2021 XPON Technologies AU/NZ
Missing socket and flags parameters...
Credits to https://github.com/elliot-sawyer/silverstripe-mysql-ssl
for showing the workaround!
Connect Silverstripe with Cloud SQL
38. 38 | xpon.ai © 2021 XPON Technologies AU/NZ
Connect Silverstripe with Cloud SQL
39. 39 | xpon.ai © 2021 XPON Technologies AU/NZ
GCP_MySQLDatabase.php
40. 40 | xpon.ai © 2021 XPON Technologies AU/NZ
GCP_MySQLiConnector.php
41. 41 | xpon.ai © 2021 XPON Technologies AU/NZ
Key Silverstripe Env Variables
Variable Description
SS_DATABASE_NAME Name of the database in Cloud SQL to use
SS_DATABASE_PASSWORD Password of user to connect to Cloud SQL with
SS_DATABASE_USERNAME Database user to connect to Cloud SQL with
SS_DATABASE_CLASS Our custom database class
SS_DATABASE_SERVER NULL
SS_DATABASE_PORT 3306
DATABASE_SOCKET Custom ENV variable. The Cloud SQL database socket in format:
cloudsql/[CONNECTION-NAME]
42. 42 | xpon.ai © 2021 XPON Technologies AU/NZ
GCP Compute Options
43. 43 | xpon.ai © 2021 XPON Technologies AU/NZ
App Engine
● Fully Managed Serverless PaaS Offering
● Code-first Platform - Write code and deploy
● Streamline deployment
○ No servers to manually provision -
app.yaml
● Simplify scalability
44. 44 | xpon.ai © 2021 XPON Technologies AU/NZ
Every problem become a code problem!
45. 45 | xpon.ai © 2021 XPON Technologies AU/NZ
App Engine Standard vs Flexible
Standard Flexible
Specific versions of languages supported
(PHP, Python, Java etc)
Any runtime that support HTTP request
No writing to local file system(exc. /tmp) No sandbox restraints
No SSH Can SSH
Limited 3rd party software installations Support for 3rd party binaries
Pay per instance class, with automatic
shutdown
Pay for resource allocation per hour, no
automatic shutdown
All requests time out at 60 seconds Runs in a container
46. 46 | xpon.ai © 2021 XPON Technologies AU/NZ
Versions - Traffic Splitting
47. 47 | xpon.ai © 2021 XPON Technologies AU/NZ
Blue-Green Deployments
48. 48 | xpon.ai © 2021 XPON Technologies AU/NZ
Canary Deployment
49. 49 | xpon.ai © 2021 XPON Technologies AU/NZ
Setting up a Load Balancer
Skip...Built into App Engine!
50. 50 | xpon.ai © 2021 XPON Technologies AU/NZ
Deploying App Engine - app.yaml
Make sure Cloud SQL setting is on!
https://cloud.google.com/sql/docs/mysql/connect-
app-engine-flexible
51. 51 | xpon.ai © 2021 XPON Technologies AU/NZ
Installing Packages
● composer install is ran on deployment
● auth.json in project to read from private repo
52. 52 | xpon.ai © 2021 XPON Technologies AU/NZ
PHP Extensions
● php.ini or composer.json
53. 53 | xpon.ai © 2021 XPON Technologies AU/NZ
gcloud app deploy app.yaml
(*Flags can be passed to command)
54. 54 | xpon.ai © 2021 XPON Technologies AU/NZ
You can visit the App Engine subdomain URL to use the site.
55. 55 | xpon.ai © 2021 XPON Technologies AU/NZ
What happens during a deployment?
56. 56 | xpon.ai © 2021 XPON Technologies AU/NZ
Ignoring files - .gcloudignore
57. 57 | xpon.ai © 2021 XPON Technologies AU/NZ
Other things to know….
● Email - 3rd Party Services (SendGrid, Mailgun etc)
● Time in UTC - Use library like “carbon” to convert
● Logging - GCP Operations Suites + Monolog
● Versions - Delete “unnecessary” versions!
● Managing Secrets
● Just a starting point -> CDN, Cloud Functions, K8s
58. 58 | xpon.ai © 2021 XPON Technologies AU/NZ
Custom Domains
61. 61 | xpon.ai © 2021 XPON Technologies AU/NZ
It’s not hard to start adopting the Cloud!