Download presentation
Presentation is loading. Please wait.
1
Dreaming up a CMS in Go (golang)
Use Drupal experience to imagine a fast CMS. DrupalCamp Florida Jitesh Doshi, SpinSpire.com Sample code:
2
We love Drupal as a CMS & Platform
We make a living at it. But we want more from it … Speed Smaller footprint Faster development Massive scaling More flexible Information Architecture While keeping all that is good about Drupal
3
About SpinSpire SpinSpire is a Drupal focused company.
All developers located in Jacksonville, Florida. Contributed modules: popular_tags & prlp. Clients such as Nike, Florida Blue and Federal Govt. Find us on the web, or visit spinspire.com
4
Go Programming Language (golang)
Correctness: Compilation, static typing, etc. Productivity: Garbage collection, small core A comprehensive runtime library Package system (go get) Fully self-contained binaries Cross-compilation Overall great toolset
5
Fully Self-contained binaries
Can be deployed as small, single file docker image Combine with docker-compose to add database, caching, search-engine, etc. Look ma, no OS!!!
6
Dynamically loaded plugins (extensions)
Now, compile plugins to *.so files (on Linux) Load the plugin from "main" binary Call symbols (functions) from the plugin What's that, if not an extension?
7
Extreme scalability with goroutines
Go implements CSP's (Communicating Seq. Processes) as goroutines and channels Any blocking operation could be goroutine Run tens of thousands of goroutines But make sure there's no reverse proxy! Built-in HTTP server runs each HTTP request in it's own goroutine
8
More Flexible Information Architecture
Problems with Drupal entities: nid + vid + langcode Embedding and referencing other entities NoSQL v/s Relational Full NoSQL / document databases (Mongo etc.) Partial schemaless: JSON columns in MySQL & PGSQL
9
Content Editing Usability Improvements
Instant, one-click edits (HTML5 inline editing) Auto-save Auto-versioning Layered versioning Easy undo/redo Basically, a git-like CMS
10
Other Features Real-time content (push) updates for site visitors
E.g. live updates on breaking news or game score. Think firebase! Or better yet, RethinkDB. API-fast!!! (not just API-first) Bootstrapping Drupal slows down API calls Native GraphQL server Server-side templating option(al).
11
What would setup/install look like?
Install docker curl -O <somewhere>/docker-compose.yml docker-compose up -d Navigate to Download *.so plugins to ./plugins Enable and configure plugins Deploy to PROD (using CLI tool) in cloud
12
Development Workflow? go get … cli start …
edit <someplugin>.go (vscode, IntelliJ, vi, emacs, etc.) Save … auto-compile … auto-reload Test … Commit … push ...
13
Let's move the conversation forward
And take action ... Visit spinspire.com Past video tutorial screencasts youtube.com/spinspire Sample code:
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.