Slide 1

Slide 1 text

Agile Web Development Liip.ch – SYMFONY DEMO ON Some first steps and experience .. and a small surprise

Slide 2

Slide 2 text

SYMFONY @ LIIP • Liip was one of the first agencies world wide to use Symfony2 • Symfony thanks to its modular architecture is very widely used • Biggest strength of is its flexibility and time to market for highly individualized applications

Slide 3

Slide 3 text

HOSTING PAIN POINTS @ LIIP • Hosting is done by customer internal IT or hosting partners • Risk of delays due to missing testing/staging setup • Preview of parallel development branches not possible • Differences in development, staging and production

Slide 4

Slide 4 text

WORKING WITH BRANCHES

Slide 5

Slide 5 text

Platform.sh and agile software development WORKING WITH BRANCHES

Slide 6

Slide 6 text

WORKING WITH BRANCHES Platform.sh and agile software development

Slide 7

Slide 7 text

WORKING WITH BRANCHES Code • Application-Code • Infrastructure Production Staging Development Data • Database • Files • Solr-Index • etc.

Slide 8

Slide 8 text

CONFIGURATION OF INFRASTRUCTURE • Compact configurations files right in the application • Services can be activated with li le effort (MySQL, Solr, Redis, ..) • Read Only Filesystem improves security • Persistenter storage is available (f.e. for log files, caches ..) • Dedicated documentation on platform.sh and symfony.com

Slide 9

Slide 9 text

SYMFONY CONFIGURATION # Symfony specific settings in the .platform.app.yaml # The toolstack used to build the application. toolstack: "php:symfony" # The configuration of app when it is exposed to the web. web: document_root: "/web" passthru: "/app.php" # The mounts that will be performed when the package is deployed. mounts: "/app/cache": "shared:files/cache" "/app/logs": "shared:files/logs" # The hooks that will be performed when the package is deployed. hooks: build: | rm web/app_dev.php app/console --env=prod assetic:dump --no-debug # At this point the file system is read-only! deploy: | app/console --env=prod cache:clear

Slide 10

Slide 10 text

SERVICES ACTIVATION # Enable services in the .platform/services.yaml # host: database.internal, port: 3306, username/password: [blank] mysql: type: mysql disk: 2048 # host: redis.internal, scheme: redis, port: 6379 redis: type: redis # host: solr.internal, scheme: solr, port: 8080 solr: type: solr disk: 1024

Slide 11

Slide 11 text

DATABASE CONFIGURATION # app/config/config.yml imports: - { resource: parameters.yml } - { resource: parameters_platform.php } - { resource: security.yml } .. setParameter('database_driver', 'pdo_' . $endpoint['scheme']); $container->setParameter('database_host', $endpoint['host']); $container->setParameter('database_port', $endpoint['port']); $container->setParameter('database_name', $endpoint['path']); $container->setParameter('database_user', $endpoint['username']); $container->setParameter('database_password', $endpoint['password']); $container->setParameter('database_path', ''); }

Slide 12

Slide 12 text

PHP CONFIGURATION # Configure PHP extensions in the .platform.app.yaml # Enabled by default are: pdo, mysql, mysqli, pdo_mysql, sqlite3, gd, curl, intl, mcrypt and zendopcache runtime: extensions: - http - redis - ssh2 disabled_extensions: - sqlite3 # Configure other PHP settings inside php.ini ; Increase PHP memory limit memory_limit = 256M ; Store sessions in /tmp, alternatively mount a shared directory session.save_path = '/tmp/sessions'

Slide 13

Slide 13 text

ROUTING CONFIGURATION # Manage routing in the .platform/routes.yaml "http://{default}/": type: upstream upstream: "php:php" "http://www.{default}/": type: redirect to: "http://{default}/"

Slide 14

Slide 14 text

INTEGRATION WITH GITHUB • Automatic deployment of development branches and PRs • Deployment status is shown right in the PR platform integration:add --type=github --token=GITHUB-USER-TOKEN --repository=USER/REPOSITORY For details see

Slide 15

Slide 15 text

INTEGRATION WITH BLACKFIRE.IO • Integrated profiling solution for platform.sh runtime: extensions: - name: blackfire configuration: server_id: "ce95eba9-2d90-48b7-ad75-fcad42e1bcab" server_token: "ca7e32ac2d466ecfdf30b8ac43bdfef1304fc3feeb66e8906c1192b435e206f0"

Slide 16

Slide 16 text

DEMO TIME

Slide 17

Slide 17 text

MORE THAN “JUST” SYMFONY • Every Platform.sh project can even contain multiple applications

Slide 18

Slide 18 text

ROBUST + MODERN INFRASTRUCTURE Platform.sh Enterprise offers additional important features • Integrated CDN (Content Delivery Network) • High availability through the use of multiple data centers (99,99%) • Elastic scaling • Compatible with different public clouds (Amazon, Azure) • Private cloud is possible on demand

Slide 19

Slide 19 text

AND NOW FOR A A SMALL SURPRISE .. • Developers get bombarded daily with new services • Many services do not hold their promises • Or everything that isn’t promised explicitly is missing • Our developers are therefore pre y sceptic these days

Slide 20

Slide 20 text

THIS IS ADRIAN .. AND HE IS SCEPTIC Still within 4 hours before his holidays he quickly without previous knowledge about platform.sh, he created this demo ..

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

YELLOWCUBE Comprehensive logistic solution for e-commerce by PostLogistics • automatic order and shipping process (picking, packing and shipping) • Shipping both national and international • Storage of smaller items von Kleinteilen (< 30 kg) • Pale e and block storage of larger items

Slide 23

Slide 23 text

YELLOWCUBE And more • Return management • Customer individual packaging • Adding of prospects and flyers etc • Logging of serial numbers • Management of goods that has date of expiries • Customs

Slide 24

Slide 24 text

YelloCube means focusing on the core business

Slide 25

Slide 25 text

YELLOWCUBE CONNECTORS Open Source YellowCube Connectors by Liip • PHP Client Library (SOAP) • Magento Extension • Drupal Commerce Module GitHub: h ps://github.com/swisspost-yellowcube Infos: h p://www.liip.ch/de/yellowcube

Slide 26

Slide 26 text

WHY YELLOWCUBE ON PLATFORM.SH? • Simple and fast starting point with a few clicks • Preconfigured Drupal Commerce with YellowCube (Magento coming soon) • Fully automatic deployment saves costs • Testing of parallel development branches • International scaleable shop-solution incl. CDN

Slide 27

Slide 27 text

DEMO TIME

Slide 28

Slide 28 text

Agile Web Development Liip.ch – QUESTIONS? THANK YOU VERY MUCH!