SlideShare ist ein Scribd-Unternehmen logo
George Wilson - December 2020
Building Modern Websites
The Cloud, APIs and CLIs
• Senior Consulting Engineer @
Automation Logic

• Working in DevOps on Government
Projects

• Joomla Leadership 2013-2019

• Joomla 4 Release Lead

• Please feel free to reach out on:

• Glip: George Wilson

• Email:
george.wilson@community.joomla.org

• GitHub: wilsonge
About Me
• Many people reference Google
trends as a measure of Joomla’s
decline

• No one mentions Wordpress in
the UK is down ~50% in Google
trends over the last 5 years

• Partly because their GLOBAL
marketshare remains constant

• Why have many companies
and agencies have fallen out
of love with the traditional PHP
CMS’?
Where did this talk come from?
The Cloud
• Ultimately any group of servers containing
applications and databases is a cloud

• Traditional PHP Shared hosting by <insert
you hosting provider here> is a cloud

• But these days the cloud o
ff
ers so many
more services than just a hosting platform

• Machine learning

• Secrets Management

• Storage

• CDN

• Container Management

• Virtual Machines
So what is the cloud?
Why are People Using the Cloud
• Depth of services

• Costs/Scalability - Pay for what you use and scale it as required

• Flexibility

• Reduced Downtime

• Great disaster recovery options

• Excellent Monitoring Capabilities

• Serverless
• These days people are tending towards
one of the 3 platforms:

1. AWS

✦ General Purpose, often small
business

2. Azure

✦ Often more corporate based as
more transparent on it’s security
model

3. GCP

✦ Highly data focussed - many
optimisations for large data sets &
analytics
The Modern Cloud
Source: https://start.jcolemorrison.com/understanding-modern-
cloud-architecture-on-aws-a-concepts-series/
• Amazon’s Off ering

• Dozens of services baked in -
but generally speaking a PHP
Environment might look like:

• VPC (Network)

• S3 (Storage)

• EC2 (Linux VM)

• RDS (MySQL)

• Route 53 (DNS)
AWS
For when that sounds like too much
Elastic Beanstalk
For when that sounds like too much
Elastic Beanstalk
15 minutes later…
For when that sounds like too much
Elastic Beanstalk
Around $19 a month including a HA Database
Caveat
This just helps you to get a working setup in AWS this isn’t for
use in real life!!
• People no longer use static
con
fi
gurationfi les

• Lack of portability between
environments

• Desire to automate creation of
environments in ever simpler ways

• .env project

• Pulls in from environment
variables OR from
fi
les

• Used in most modern PHP
projects notably Laravel

• Would allow full use of Joomla in a
Beanstalk project
Modern Configuration Files
Quick Format Comparison
Joomla - Global
fi
le containing prod values. Values assembled from con
fi
g object as required
Laravel - .env
fi
le containing dev values, then assembled into con
fi
guration
fi
les
which in turn are loaded into a Con
fi
guration class
Things we can do
in core about this
https://github.com/joomla/joomla-cms/
compare/4.0-dev...wilsonge:feature/dotenv?
expand=1
Managing Installation/Updates
• So in summary:

• We have a Linux machine which gets destroyed and rebuilt every time we make a
new deployment from our ZIP
fi
le

• Questions Remaining:

• How do we disable use of Global Con
fi
g in the UI - these values are no longer
con
fi
gured through Joomla, but by our environment variables

• Same sort of switch required for loading our .env
fi
le for local development

• How do we manage the installation process (given all the normal form
fi
elds are
useless) - but we still need to setup our SQL DB?

• How do we manage Joomla upgrades - committing the physical
fi
les to git is
annoying
Automating Things
• My job is to automate the creation of resources

• In the words of a former team lead “You really hate GUI’s don’t you?”

• We’re going to use two tools for this

• AWS CLI (v2) - Installation Instructions: https://docs.aws.amazon.com/cli/latest/
userguide/install-cliv2.html 

• I have authenticated to my personal AWS Account already

• JQ - JSON Parsing for Bash - https://stedolan.github.io/jq/download/

• We’re largely going to follow the tutorial documented here https://
docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-create-awscli.html
but being a bit more speci
fi
c to deploying my dummy Joomla instance
Automating Things
• aws elasticbeanstalk create-storage-location

• aws elasticbeanstalk create-application --application-name george-joomla-cli

• aws ec2 import-key-pair --key-name "george-primary-laptop-ssh" --public-key-
material
fi
leb://~/.ssh/id_rsa.pub
Ensure that a storage location has been setup
Create the main application (empty at this point) in Elastic Beanstalk
Setup my public ssh key into AWS for use later
Automating Things
• aws s3 cp build/tmp/packages/Joomla_4.0.0-beta6-dev-Development-
Full_Package.zip s3://elasticbeanstalk-eu-west-2-846108235618/test/
Joomla_4.0.0-beta6-dev-Development-Full_Package.zip

• aws elasticbeanstalk create-application-version --application-name george-
joomla-cli --version-label v1 --source-bundle S3Bucket=elasticbeanstalk-eu-
west-2-846108235618,S3Key=test/Joomla_4.0.0-beta6-dev-Development-
Full_Package.zip
Name of storage location from previous step
Path we want to drop

our data in - can be anything

we just need to remember it for

the next step!
Copy our zip that we want to deploy into the above storage location
Now upload our local copy of Joomla upstream
Automating Things
• aws elasticbeanstalk list-platform-versions --
fi
lters
'Type="PlatformName",Operator="contains",Values="PHP"' | grep
PlatformArn | awk -F '"' '{print $4}' | awk -F '/' '{print $2}'

• aws elasticbeanstalk create-confi guration-template --application-name
george-joomla-cli --template-name v1 --solution-stack-name "64bit Amazon
Linux 2 v3.1.3 running PHP 7.4"
Check what PHP Versions are available for us to use - Source: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/launch-now-url.html#launch-now-url.params
Automating Things
• aws elasticbeanstalk create-environment --cname-pre
fi
x george-joomla-cli --
application-name george-joomla-cli --template-name v1 --version-label v1 --
environment-name v1-initial --option-settings
fi
le://options.json
Create the environment - start with a simple
con
fi
guration!
Setup networking (not required in some cases)
Required permissions for EBS to connect to our Linux Box
Ensure our Linux Box gets a public IP address so we can access

it through the browser
Ensure our SSH key can access the Linux Box
Automating Things
How to
fi
nd out what the magic options are?
• Google -> AWS Documentation :)

• https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-
options-general.html
Settings in your Github Repo!
• Not all options have to be con
fi
gured
in this JSON
fi
le!

• Some options can be controlled in
your GitHub repo

• Environment speci
fi
c things will
need to be on the command line still

• MySQL Database: Environment
JSON File

• Joomla Site Name: con
fi
g
fi
le in
repo
Automating Things
Source: https://github.com/aws-samples/eb-php-wordpress
Summary
• We setup a fully automated
Joomla environment with just 7
commands (and 1 json con
fi
g
fi
le)

• This means we can spin up our
environment in a public location
again and again (and delete it on
repeat) at will

• We also have good visibility over
the environment (in a way we
wouldn’t have on a traditional
PHP host)
Automating Things
Cli Control
Source: https://imgur.com/4xThP
… and why should you try it?
• Many people have been getting back into
CLIs

• Development with git

• Containers with docker

• Companies are making automation a
priority!

• Safety is running the same command
multiple times and always getting the
same result

• Works great as a compliment to rest APIs
Why is CLI back in Fashion?
• Runs outside the server (e.g.
AWS Cli)

• Allows users to manage their
data in your site (Create an
event on your events site,
editing pricing of their product
in your shop etc.)

• Generally uses a Sites API to
exchange data and will require
authentication
Client Side
Client Side vs Server Side CLI
• Runs on the server (e.g. WP-CLI,
Joomla 4 Cli)

• For managing the server (e.g.
Backups, Updates etc.)

• As it sits on the server will not
require authentication as access to
the server is the authentication

• Even can be used (e.g. Laravel
Artisan) to help you do development
work
Server Side
CMS Relevance?
WP CLI tool (with code
contributed by Automattic)
has over 4.3k stars on
Github - that’s more stars
than Joomla’s main
repository (3.6k)!
• Joomla 4 has rebuilt it’s CLI layer
(based on the Symfony library)

• Already has buy-in (and
excitement) from several major
extension providers

• Allows the automation of basic
functionality for day to day
maintenance

• Of course there’s still the
standard backend for content
creators and people who
aren’t con
fi
dent with the CLI!
Joomla 4 Server-Side CLI
• Most site builders have a basic
setup and set of extensions they
precon
fi
gure onto the majority of
their websites

• Imagine doing this in a single
script!
Joomla 4 Server-Side CLI
APIs and Client Side CLIs
Are APIs relevant to a CMS?
• Yes! Many people already use them:

• e.g. Backing ups to AWS (e.g. Akeeba)

• Integrations (e.g. MailChimp)

• Google Analytics

• Payment Providers

• If you’re building a website where customers can do a level of administration (e.g.
shops where people can add their products etc. there will be demand for this!)

• There’s demand for being able to programatically con
fi
gure your website in
di
ff
erent environments!
What are the characteristics of a modern HTTP API?
• Language - Consistent response formats (options include JSON+LD, JSON API
etc.)

• Ability to Filter/Search for data (including sort order)

• Pagination

• Authorisation and Authentication (often OAuth)

• Good documentation (even if it’s an internal API)

• Responses to the 4 main HTTP Methods - POST and GET (like on a normal
website) as well as PUT/PATCH and DELETE

• REST is generally considered the go to these days (sometimes GraphQL for
highly nested data)
• Built to allow interactions with
Joomla with other mediums (e.g.
mobile to Joomla, other websites
with Joomla)

• Extendable to allow adding
custom endpoints (and therefore
users to be able to authenticate
into Joomla)

• Extendable authentication
allowing you to optimise based
on what you want to use the API
for
Joomla 4 API
• Open API is a method for
documenting APIs in JSON or
YAML

• Originally called swagger
before being moved to a
community managed project

• https://github.com/OAI/
OpenAPI-Speci
fi
cation
Documenting a custom API with
Open API
Documentation
• Various auto-documentation
sources exist for OpenAPI
fi
les

• Redoc is one of my personal
favourites

• https://github.com/Redocly/
redoc

• Simple custom element and
CSS means it is super
customisable
The Art of the Possible
Documentation
• Swagger Docs is also well
known

• Also used for our own Joomla
Downloads Site API

• Nice tool at editor.swagger.io
that allows you to see your
JSON File and the rendered docs
page on the same screen
The Art of the Possible
Demo Time
Going through editor.swagger.io
Advanced - SDK Generation
• All azure’s integrations with other
languages (NodeJS, PHP, Java etc)
start with an Open API File

• Then each language’s SDK is
generated

• Guarantees parity between libraries
(relevant if you have lots of API
endpoints)

• This could be useful for easy 3rd party
integrations with shops or event sites

• https://github.com/Azure/autorest
The Art of the Possible
• Authentication and Requests
made through the API

• CLI gives users more options
and situationally can be easier
to create automated
approaches

• API Auth token stored locally on
your computer to
fi
lesystem (e.g.
~/.aws/credentials etc).

• https://clig.dev/
Client Side CLI
https://www.contentful.com/developers/docs/tutorials/cli/
extension-management/
Summary
• The modern web is based around the ability to deploy quick and fast updates
(as languages evolve)

• Why? In my opinion this is due to both the increased Agile nature of
projects (especially in many digital agencies) as well as the faster paced
growth of the PHP Language/The Cloud (and frameworks taking
advantages of these new features)

• This is highly driven in many medium and large sized companies by increased
use of the CLI and API

• Increased automation has built up around this - in order to reduce the impact
of human error as they work quickly
Summary
• Many digital agencies have moved into the cloud to take advantage of the
managed o
ff
erings by cloud providers

• Still gains the ability to control your data (unlike Wix/Squarespace) but with
many more o
ff
erings than those given by traditional PHP Hosts

• More
fl
exibility for sites that may need a more niche service as well as
better log management

• Cost di
ff
erences do exist - but in the grand scheme of anything other than
individual sites or extremely small startups are negligible
Summary
• We looked at the services involved in deploying Joomla into one cloud
provider (AWS)

• We looked at the small changes that would make Joomla more in tune with
the larger PHP ecosystem and would make deploying Joomla more simple
when deploying into the cloud

• And the further work that would be required to make this realistic for
hosting Joomla services

• We looked at automating the setup of a Joomla site in a 0 to hero setup with
just 7 commands (and 1 con
fi
g
fi
le)
Summary
• We looked at the rise of the CLI

• We di
ff
erentiated them into server side and client side o
ff
erings and what the
di
ff
erence between them was

• We saw the already existing demand for this as a service in the CMS Marketplace
in the Wordpress CLI

• We looked into what to expect from an API

• We looked at use cases, how to document them and expose them to the clients
on your site through Open API and Swagger

• Finally are these concepts relevant to many Joomla Sites?

• Absolutely not - but they are relevant to lots of sites that fall into Joomla’s target
market too!
Questions?
Thank you for watching!

Weitere ähnliche Inhalte

Was ist angesagt?

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
Scott Taylor
 
SOA on Rails
SOA on RailsSOA on Rails
SOA on Rails
Avi Flombaum
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
Gavin Cornwell
 
Alfresco Process Services REST API - Alfresco DevCon 2018
 Alfresco Process Services REST API - Alfresco DevCon 2018 Alfresco Process Services REST API - Alfresco DevCon 2018
Alfresco Process Services REST API - Alfresco DevCon 2018
Dennis Koch
 
How Shopify Scales Rails
How Shopify Scales RailsHow Shopify Scales Rails
How Shopify Scales Rails
jduff
 
Padrino - the Godfather of Sinatra
Padrino - the Godfather of SinatraPadrino - the Godfather of Sinatra
Padrino - the Godfather of Sinatra
Stoyan Zhekov
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
Stacy London
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Martin Bergljung
 
Serverless Media Workflow
Serverless Media WorkflowServerless Media Workflow
Serverless Media Workflow
MooYeol Lee
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
J V
 
RESTful Api practices Rails 3
RESTful Api practices Rails 3RESTful Api practices Rails 3
RESTful Api practices Rails 3
Anton Narusberg
 
ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018
Mario Romano
 
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
Edward Wilde
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
Nicolaas Matthijs
 
Node.js to the rescue
Node.js to the rescueNode.js to the rescue
Node.js to the rescue
Marko Heijnen
 
Flexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldFlexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework World
Kevin Ball
 
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUG
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUGIntro To CommandBox CLI,Package Manager, Server at the Japan CFUG
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUG
Ortus Solutions, Corp
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
Derek Jacoby
 

Was ist angesagt? (20)

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
 
eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
 
SOA on Rails
SOA on RailsSOA on Rails
SOA on Rails
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
 
Alfresco Process Services REST API - Alfresco DevCon 2018
 Alfresco Process Services REST API - Alfresco DevCon 2018 Alfresco Process Services REST API - Alfresco DevCon 2018
Alfresco Process Services REST API - Alfresco DevCon 2018
 
How Shopify Scales Rails
How Shopify Scales RailsHow Shopify Scales Rails
How Shopify Scales Rails
 
Padrino - the Godfather of Sinatra
Padrino - the Godfather of SinatraPadrino - the Godfather of Sinatra
Padrino - the Godfather of Sinatra
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Serverless Media Workflow
Serverless Media WorkflowServerless Media Workflow
Serverless Media Workflow
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
 
RESTful Api practices Rails 3
RESTful Api practices Rails 3RESTful Api practices Rails 3
RESTful Api practices Rails 3
 
ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018
 
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
Docker and serverless Randstad Jan 2019: OpenFaaS Serverless: when functions ...
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
Node.js to the rescue
Node.js to the rescueNode.js to the rescue
Node.js to the rescue
 
Flexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldFlexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework World
 
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUG
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUGIntro To CommandBox CLI,Package Manager, Server at the Japan CFUG
Intro To CommandBox CLI,Package Manager, Server at the Japan CFUG
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
 

Ähnlich wie Modern websites in 2020 and Joomla

Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
Konstantin Gredeskoul
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
Cameron Dutro
 
From Heroku to Amazon AWS
From Heroku to Amazon AWSFrom Heroku to Amazon AWS
From Heroku to Amazon AWS
Sebastian Schleicher
 
用Serverless技術快速開發line聊天機器人
用Serverless技術快速開發line聊天機器人用Serverless技術快速開發line聊天機器人
用Serverless技術快速開發line聊天機器人
Kevin Luo
 
COB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developersCOB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developers
Chris O'Brien
 
Fluxible
FluxibleFluxible
Fluxible
Taylor Lovett
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Jeff Potts
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
Amazon Web Services
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
edm00se
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
rich fernandez
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
Amazon Web Services
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012
Steven Pousty
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
Gaetano Giunta
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Gaetano Giunta
 
The ABC's of IaC
The ABC's of IaCThe ABC's of IaC
The ABC's of IaC
Steven Pressman, CISSP
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
Amazon Web Services
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
3Pillar Global
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
Walther Lalk
 

Ähnlich wie Modern websites in 2020 and Joomla (20)

Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
 
From Heroku to Amazon AWS
From Heroku to Amazon AWSFrom Heroku to Amazon AWS
From Heroku to Amazon AWS
 
用Serverless技術快速開發line聊天機器人
用Serverless技術快速開發line聊天機器人用Serverless技術快速開發line聊天機器人
用Serverless技術快速開發line聊天機器人
 
COB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developersCOB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developers
 
Fluxible
FluxibleFluxible
Fluxible
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
The ABC's of IaC
The ABC's of IaCThe ABC's of IaC
The ABC's of IaC
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
 

Kürzlich hochgeladen

Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
ervikas4
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
widenerjobeyrl638
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
Pedro J. Molina
 

Kürzlich hochgeladen (20)

Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
美洲杯赔率投注网【​网址​🎉3977·EE​🎉】
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
 

Modern websites in 2020 and Joomla

  • 1. George Wilson - December 2020 Building Modern Websites The Cloud, APIs and CLIs
  • 2. • Senior Consulting Engineer @ Automation Logic • Working in DevOps on Government Projects • Joomla Leadership 2013-2019 • Joomla 4 Release Lead • Please feel free to reach out on: • Glip: George Wilson • Email: george.wilson@community.joomla.org • GitHub: wilsonge About Me
  • 3. • Many people reference Google trends as a measure of Joomla’s decline • No one mentions Wordpress in the UK is down ~50% in Google trends over the last 5 years • Partly because their GLOBAL marketshare remains constant • Why have many companies and agencies have fallen out of love with the traditional PHP CMS’? Where did this talk come from?
  • 5. • Ultimately any group of servers containing applications and databases is a cloud • Traditional PHP Shared hosting by <insert you hosting provider here> is a cloud • But these days the cloud o ff ers so many more services than just a hosting platform • Machine learning • Secrets Management • Storage • CDN • Container Management • Virtual Machines So what is the cloud?
  • 6. Why are People Using the Cloud • Depth of services • Costs/Scalability - Pay for what you use and scale it as required • Flexibility • Reduced Downtime • Great disaster recovery options • Excellent Monitoring Capabilities • Serverless
  • 7. • These days people are tending towards one of the 3 platforms: 1. AWS ✦ General Purpose, often small business 2. Azure ✦ Often more corporate based as more transparent on it’s security model 3. GCP ✦ Highly data focussed - many optimisations for large data sets & analytics The Modern Cloud Source: https://start.jcolemorrison.com/understanding-modern- cloud-architecture-on-aws-a-concepts-series/
  • 8. • Amazon’s Off ering • Dozens of services baked in - but generally speaking a PHP Environment might look like: • VPC (Network) • S3 (Storage) • EC2 (Linux VM) • RDS (MySQL) • Route 53 (DNS) AWS
  • 9. For when that sounds like too much Elastic Beanstalk
  • 10. For when that sounds like too much Elastic Beanstalk 15 minutes later…
  • 11. For when that sounds like too much Elastic Beanstalk Around $19 a month including a HA Database
  • 12. Caveat This just helps you to get a working setup in AWS this isn’t for use in real life!!
  • 13. • People no longer use static con fi gurationfi les • Lack of portability between environments • Desire to automate creation of environments in ever simpler ways • .env project • Pulls in from environment variables OR from fi les • Used in most modern PHP projects notably Laravel • Would allow full use of Joomla in a Beanstalk project Modern Configuration Files
  • 14. Quick Format Comparison Joomla - Global fi le containing prod values. Values assembled from con fi g object as required Laravel - .env fi le containing dev values, then assembled into con fi guration fi les which in turn are loaded into a Con fi guration class
  • 15. Things we can do in core about this https://github.com/joomla/joomla-cms/ compare/4.0-dev...wilsonge:feature/dotenv? expand=1
  • 16. Managing Installation/Updates • So in summary: • We have a Linux machine which gets destroyed and rebuilt every time we make a new deployment from our ZIP fi le • Questions Remaining: • How do we disable use of Global Con fi g in the UI - these values are no longer con fi gured through Joomla, but by our environment variables • Same sort of switch required for loading our .env fi le for local development • How do we manage the installation process (given all the normal form fi elds are useless) - but we still need to setup our SQL DB? • How do we manage Joomla upgrades - committing the physical fi les to git is annoying
  • 17. Automating Things • My job is to automate the creation of resources • In the words of a former team lead “You really hate GUI’s don’t you?” • We’re going to use two tools for this • AWS CLI (v2) - Installation Instructions: https://docs.aws.amazon.com/cli/latest/ userguide/install-cliv2.html • I have authenticated to my personal AWS Account already • JQ - JSON Parsing for Bash - https://stedolan.github.io/jq/download/ • We’re largely going to follow the tutorial documented here https:// docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-create-awscli.html but being a bit more speci fi c to deploying my dummy Joomla instance
  • 18. Automating Things • aws elasticbeanstalk create-storage-location • aws elasticbeanstalk create-application --application-name george-joomla-cli • aws ec2 import-key-pair --key-name "george-primary-laptop-ssh" --public-key- material fi leb://~/.ssh/id_rsa.pub Ensure that a storage location has been setup Create the main application (empty at this point) in Elastic Beanstalk Setup my public ssh key into AWS for use later
  • 19. Automating Things • aws s3 cp build/tmp/packages/Joomla_4.0.0-beta6-dev-Development- Full_Package.zip s3://elasticbeanstalk-eu-west-2-846108235618/test/ Joomla_4.0.0-beta6-dev-Development-Full_Package.zip • aws elasticbeanstalk create-application-version --application-name george- joomla-cli --version-label v1 --source-bundle S3Bucket=elasticbeanstalk-eu- west-2-846108235618,S3Key=test/Joomla_4.0.0-beta6-dev-Development- Full_Package.zip Name of storage location from previous step Path we want to drop our data in - can be anything we just need to remember it for the next step! Copy our zip that we want to deploy into the above storage location Now upload our local copy of Joomla upstream
  • 20. Automating Things • aws elasticbeanstalk list-platform-versions -- fi lters 'Type="PlatformName",Operator="contains",Values="PHP"' | grep PlatformArn | awk -F '"' '{print $4}' | awk -F '/' '{print $2}' • aws elasticbeanstalk create-confi guration-template --application-name george-joomla-cli --template-name v1 --solution-stack-name "64bit Amazon Linux 2 v3.1.3 running PHP 7.4" Check what PHP Versions are available for us to use - Source: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/launch-now-url.html#launch-now-url.params
  • 21. Automating Things • aws elasticbeanstalk create-environment --cname-pre fi x george-joomla-cli -- application-name george-joomla-cli --template-name v1 --version-label v1 -- environment-name v1-initial --option-settings fi le://options.json Create the environment - start with a simple con fi guration! Setup networking (not required in some cases) Required permissions for EBS to connect to our Linux Box Ensure our Linux Box gets a public IP address so we can access it through the browser Ensure our SSH key can access the Linux Box
  • 22. Automating Things How to fi nd out what the magic options are? • Google -> AWS Documentation :) • https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command- options-general.html
  • 23. Settings in your Github Repo! • Not all options have to be con fi gured in this JSON fi le! • Some options can be controlled in your GitHub repo • Environment speci fi c things will need to be on the command line still • MySQL Database: Environment JSON File • Joomla Site Name: con fi g fi le in repo Automating Things Source: https://github.com/aws-samples/eb-php-wordpress
  • 24. Summary • We setup a fully automated Joomla environment with just 7 commands (and 1 json con fi g fi le) • This means we can spin up our environment in a public location again and again (and delete it on repeat) at will • We also have good visibility over the environment (in a way we wouldn’t have on a traditional PHP host) Automating Things
  • 26. … and why should you try it? • Many people have been getting back into CLIs • Development with git • Containers with docker • Companies are making automation a priority! • Safety is running the same command multiple times and always getting the same result • Works great as a compliment to rest APIs Why is CLI back in Fashion?
  • 27. • Runs outside the server (e.g. AWS Cli) • Allows users to manage their data in your site (Create an event on your events site, editing pricing of their product in your shop etc.) • Generally uses a Sites API to exchange data and will require authentication Client Side Client Side vs Server Side CLI • Runs on the server (e.g. WP-CLI, Joomla 4 Cli) • For managing the server (e.g. Backups, Updates etc.) • As it sits on the server will not require authentication as access to the server is the authentication • Even can be used (e.g. Laravel Artisan) to help you do development work Server Side
  • 28. CMS Relevance? WP CLI tool (with code contributed by Automattic) has over 4.3k stars on Github - that’s more stars than Joomla’s main repository (3.6k)!
  • 29. • Joomla 4 has rebuilt it’s CLI layer (based on the Symfony library) • Already has buy-in (and excitement) from several major extension providers • Allows the automation of basic functionality for day to day maintenance • Of course there’s still the standard backend for content creators and people who aren’t con fi dent with the CLI! Joomla 4 Server-Side CLI
  • 30. • Most site builders have a basic setup and set of extensions they precon fi gure onto the majority of their websites • Imagine doing this in a single script! Joomla 4 Server-Side CLI
  • 31. APIs and Client Side CLIs
  • 32. Are APIs relevant to a CMS? • Yes! Many people already use them: • e.g. Backing ups to AWS (e.g. Akeeba) • Integrations (e.g. MailChimp) • Google Analytics • Payment Providers • If you’re building a website where customers can do a level of administration (e.g. shops where people can add their products etc. there will be demand for this!) • There’s demand for being able to programatically con fi gure your website in di ff erent environments!
  • 33. What are the characteristics of a modern HTTP API? • Language - Consistent response formats (options include JSON+LD, JSON API etc.) • Ability to Filter/Search for data (including sort order) • Pagination • Authorisation and Authentication (often OAuth) • Good documentation (even if it’s an internal API) • Responses to the 4 main HTTP Methods - POST and GET (like on a normal website) as well as PUT/PATCH and DELETE • REST is generally considered the go to these days (sometimes GraphQL for highly nested data)
  • 34. • Built to allow interactions with Joomla with other mediums (e.g. mobile to Joomla, other websites with Joomla) • Extendable to allow adding custom endpoints (and therefore users to be able to authenticate into Joomla) • Extendable authentication allowing you to optimise based on what you want to use the API for Joomla 4 API
  • 35. • Open API is a method for documenting APIs in JSON or YAML • Originally called swagger before being moved to a community managed project • https://github.com/OAI/ OpenAPI-Speci fi cation Documenting a custom API with Open API
  • 36. Documentation • Various auto-documentation sources exist for OpenAPI fi les • Redoc is one of my personal favourites • https://github.com/Redocly/ redoc • Simple custom element and CSS means it is super customisable The Art of the Possible
  • 37. Documentation • Swagger Docs is also well known • Also used for our own Joomla Downloads Site API • Nice tool at editor.swagger.io that allows you to see your JSON File and the rendered docs page on the same screen The Art of the Possible
  • 38. Demo Time Going through editor.swagger.io
  • 39. Advanced - SDK Generation • All azure’s integrations with other languages (NodeJS, PHP, Java etc) start with an Open API File • Then each language’s SDK is generated • Guarantees parity between libraries (relevant if you have lots of API endpoints) • This could be useful for easy 3rd party integrations with shops or event sites • https://github.com/Azure/autorest The Art of the Possible
  • 40. • Authentication and Requests made through the API • CLI gives users more options and situationally can be easier to create automated approaches • API Auth token stored locally on your computer to fi lesystem (e.g. ~/.aws/credentials etc). • https://clig.dev/ Client Side CLI https://www.contentful.com/developers/docs/tutorials/cli/ extension-management/
  • 41. Summary • The modern web is based around the ability to deploy quick and fast updates (as languages evolve) • Why? In my opinion this is due to both the increased Agile nature of projects (especially in many digital agencies) as well as the faster paced growth of the PHP Language/The Cloud (and frameworks taking advantages of these new features) • This is highly driven in many medium and large sized companies by increased use of the CLI and API • Increased automation has built up around this - in order to reduce the impact of human error as they work quickly
  • 42. Summary • Many digital agencies have moved into the cloud to take advantage of the managed o ff erings by cloud providers • Still gains the ability to control your data (unlike Wix/Squarespace) but with many more o ff erings than those given by traditional PHP Hosts • More fl exibility for sites that may need a more niche service as well as better log management • Cost di ff erences do exist - but in the grand scheme of anything other than individual sites or extremely small startups are negligible
  • 43. Summary • We looked at the services involved in deploying Joomla into one cloud provider (AWS) • We looked at the small changes that would make Joomla more in tune with the larger PHP ecosystem and would make deploying Joomla more simple when deploying into the cloud • And the further work that would be required to make this realistic for hosting Joomla services • We looked at automating the setup of a Joomla site in a 0 to hero setup with just 7 commands (and 1 con fi g fi le)
  • 44. Summary • We looked at the rise of the CLI • We di ff erentiated them into server side and client side o ff erings and what the di ff erence between them was • We saw the already existing demand for this as a service in the CMS Marketplace in the Wordpress CLI • We looked into what to expect from an API • We looked at use cases, how to document them and expose them to the clients on your site through Open API and Swagger • Finally are these concepts relevant to many Joomla Sites? • Absolutely not - but they are relevant to lots of sites that fall into Joomla’s target market too!