Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Brooklyn training October 2019

Brooklyn training October 2019

Contentful Webinars

October 09, 2019
Tweet

More Decks by Contentful Webinars

Other Decks in Technology

Transcript

  1. Welcome to Contentful Training 1 Jim Ambras, Sr. Technical Trainer

    Jason Saroyan, Director NA Partnerships Evan Witte, Strategic Partner Manager Kaitlin Green, Strategic Partner Manager Taylor Nielsen, Partner Manager
  2. Please raise your hand if you have previous experience with…

    • Drupal/ Acquia • AEM • Sitecore • CoreMedia • Wordpress • Other
  3. Contentful Overview Content infrastructure enables digital teams to power content

    in modern websites, apps, and devices 4 Jim Ambras, Sr. Technical Trainer
  4. 5 Our vision First, how the market has shifted, and

    how innovative companies stay ahead
  5. Companies are building more software than ever before to connect

    with their customers wherever they are: modern websites, mobile apps, on-site, in-home, and beyond. We are in the middle of a massive market shift 10 Now, all companies are digital product companies
  6. CMSes slow down modern digital teams 11 Rigid data models

    Prevents reusability and creates content silos Requires heavy customization and specific tools Monolithic suites Legacy workflows Templating Editor Database Does not fit modern software delivery pipelines
  7. On-premises systems MONOLITHS The way software is built has changed

    forever Cloud-based, modular architectures have become the standard for building digital products 12 Customization Interoperability Cloud-based stacks MICROSERVICES
  8. Our vision: stacks beat suites 13 Innovative companies will assemble

    modular stacks, with a content hub at the center Digital Experience Suites Digital Experience Stacks
  9. Contentful lets you build digital products, fast 14 APIs JSON

    Structured content Reuse and repurpose content, independent of channel or language Composable stack, connected to other platforms, at cloud scale Integrate with digital delivery workflows for launch & optimization Decoupled architecture Agile workflows
  10. 16 Proven results across multiple solutions Teams can launch, iterate,

    and experiment with new digital products more rapidly 5x faster to launch new customer touch points Modern Stack Websites 3x faster to launch new event and campaign microsites Personalized Experiences 14% increase in conversion rate with personalization integrations Agile eCommerce 66% decrease in unit cost of new digital products across business teams Digital Delivery Platforms
  11. Enterprises are replatforming on Contentful 17 TELUS transformed from slow

    and repetitive content updates to agile product releases for 12M customers Before Siloed content Slow to market Technical debt 7 content sources across 5 business units, powering 30+ digital products/properties After Fast time-to-value: reference architecture Low risk: more experiments & iteration Improved agility: 11 deploys per day One content infrastructure to rule them all, across business units and digital products 4x faster
  12. Create reusable content Reuse the same content across pages, properties,

    and channels 18 JSON output Rendered view Rich text editor view
  13. Manage all your content in one place Content models gives

    editors full control of all their content 19 Content variations Localized content Microcopy Content metadata Workflow metadata Design systems Content
  14. 20 Any channel, anywhere No matter where your customers are:

    mobile or web, online or onsite, all around the world Mobile Apps 2x quicker app load times Cross-Channel Experiences 4x faster to launch new onsite/offline and online experiences 98% reduction in time to launch new pages across multiple geographies Global Localization
  15. Contentful APIs allow you to manipulate content with code Content

    at scale • Independent editorial and development workflows • Continuous Integration / Continuous Deployment (CI/CD) • Refactoring content models • Large-scale content changes
  16. Content Management API Read/Write Create, edit, publish, unpublish, archive, and

    delete content and content model Content Preview API Read-only Retrieve draft and updated content in addition to published content Content Delivery API Read-only Retrieve published content to display in an app or website Images API Read-only Retrieve and apply transformations to images stored in Contentful Contentful has 4 Core REST APIs
  17. Contentful is Content Infrastructure Content Creator Content Delivery API CLI

    Web App Content Management API SDK SDK SDK Apps & Websites Conversational & Wearables Apps & AR/VR Powerful CLI and tooling to integrate into existing developer workflows or to help define brand new workflows The APIs, webhooks and SDK’s developers need to power content in any digital product. Content Preview API Customizable web app for marketers and publishers to collaborate and create content. Developer Images API
  18. Independent editorial and development workflows Editorial Workflow Development Workflow Editors

    never have to pause content creation to wait for developers to make website changes Editors never have to wait for developers to deploy new or changed content Developers can run a full “code-like” change management process with version control, QA and CI/CD using the tools they are familiar with. Developers won’t get bogged down with ad hoc requests to update content
  19. Contentful Terminology Organizations Top most parent object, connects users to

    a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets. Implications for content modeling 27
  20. Contentful’s “API-First” Approach 1. Fast 2. Flexible 3. Modern Architecture

    1. Fast implementation. Fast performance. - Cloud-native SaaS with CDN - Use the development tools you know - Fast, scalable content migration and transformation using code 2. Build any user experience for any device (anywhere). ‐ A large collection of SDKs ‐ Flexible content models ‐ Designed for easy localization 3. Take advantage of the “modern stack” architecture. - Combine best-of-breed, single purpose apps (micro-services) - Built-in integrations with popular platforms - Connect platforms easily using webhooks and UI extensions
  21. Where and when does rendering happen? 1 2 3 Dynamic

    on Server Static Site Generator Dynamic on Device A client-side app using the Contentful SDKs requests content from the Contentful APIs and renders the content on the device. A server-side app receives a request from an end user, retrieves content from Contentful (and possibly other data sources), renders the content, and sends it back in response. A static site generator fetches content from Contentful at timed intervals or on content change webhook then builds the rendered HTML pages and stores them on a static web host.
  22. Pros • Lots of languages & framework options • Reactive

    – no stale data • Easier SEO • Secure secrets (API tokens not exposed to end-users) Cons • Server-related scalability ($$$) • Higher page latency • Requires external caching or CDN • Potential single point of failure Dynamic on Server
  23. Static Site Generator (SSG) DEMO 1. Code or content changes

    trigger webhook to generate static site -OR- Generation triggered on set interval (hourly, daily, etc.) BUILD TIME REQUEST TIME
  24. Pros • Easier SEO • Offline capability • Static HTML

    is fast and simple to serve • Secure secrets (API tokens not exposed to end-users) Cons • No immediate preview/potential for stale data • Web page-centric • Generation time can be problematic for frequent content changes • Requires external hosting, caching, and CDN Static Site Generator (SSG)
  25. Pros • Simple • Reactive – no stale data •

    Fully leverages the Contentful CDN Cons • SEO support requires more effort • Possible browser compatibility issues Dynamic on Device
  26. Delivery Models: Pros & Cons Dynamic on Server Static Site

    Generator Dynamic on Device Dynamic content • • • Page latency • • • App server load • • • SEO • • • Secure Secrets • • • Contentful CDN • • • Availability • • •
  27. Dynamic Hybrid with Node.js 1 2 Dynamic on Server Dynamic

    on Device JavaScript framework takes over user interaction and hydrates page Page initially built server-side on Node.js with JavaScript framework that supports isomorphic execution (e.g. React)
  28. Content Management API Read/Write Create, edit, publish, unpublish, archive, and

    delete content and content model Content Preview API Read-only Retrieve draft and updated content in addition to published content Content Delivery API Read-only Retrieve published content to display in an app or website Images API Read-only Retrieve and apply transformations to images stored in Contentful Contentful Core APIs
  29. Contentful is Content Infrastructure Content Creator Content Delivery API CLI

    Web App Content Management API SDK SDK SDK Apps & Websites Conversational & Wearables Apps & AR/VR Powerful CLI and tooling to integrate into existing developer workflows or to help define brand new workflows The APIs, webhooks and SDK’s developers need to power content in any digital product. Content Preview API Customizable web app for marketers and publishers to collaborate and create content. Developer Images API
  30. The API for managing content on Contentful • Read/Write –

    You can modify content programmatically and refactor the content model • Enables CI/CD – Allows you to easily move content between spaces and environments using scripts • No CDN – Calls to this API are not cached, so you get and edit the most up-to-date content Content Management API
  31. Details Contentful’s Content Management API (CMA) helps you manage content

    in your spaces. This is a read/write API API Base URL https://api.contentful.com Content Management API
  32. Updating Content Take in consideration that Contentful does not merge

    changes made to content, so when updating content, you need to send the entire body of an entry. If you update content with a subset of properties, you will lose all existing properties not included in that update. You should always update resources in the following order: - Fetch current resource. - Make changes to the current resource. - Update the resource by passing the changed resource along with current version number. Content Management API
  33. Example Create a single entry - Request PUT /spaces/yadj1kx9rmg0/environments/staging/entries/post0001 -

    Headers - Authorization CFPAT-12345... - Content-Type application/vnd.contentful.management.v1+json - X-Contentful-Content-Type blogPost - Parameters - space_id yadj1kx9rmg0 - environment_id staging - entry_id post0001 More details Get a single entry Content Management API
  34. Example Create a single entry - Body More details Get

    a single entry Content Management API { "fields": { "title": { "en-US": "Hello, World!" }, "body": { "en-US": "Welcome to our webinar!" } } }
  35. Example Create a single entry - Response (201 Created) More

    details Get a single entry Content Management API { "sys": { "id": "post001", "type": "Entry", "contentType": { "sys": { "type": "Link", "linkType": "ContentType", "id": "blogPost" }}, "version": 1, "space": { "sys": { "type": "Link", "linkType": "Space", "id": "yadj1kx9rmg0" }}, "environment": { "sys": { "type": "Link", "linkType": "Environment", "id": "staging" }}, "createdAt": "2019-02-18T11:29:46.809Z", "createdBy": {"sys": {"type": "Link","linkType":... "updatedAt": "2019-02-18T11:29:46.809Z", "updatedBy": {"sys": {"type": "Link","linkType":... }, "fields": { "title": { "en-US": "Hello, World!" }, "body": { "en-US": "Welcome to our webinar!" } } }
  36. Same functionality as the Content Delivery API except it allows

    access to both published and unpublished content • Editorial Preview – powers a preview deploy/version of your frontend to allow content editors to see their content exactly as it will look when published • Read Only – You can’t accidently change content • No CDN – Calls to this API are not cached so preview will always have the most up-to-date content Content Preview API
  37. Content Preview API Details In addition to the Content Delivery

    API (CDA) for published content, the Preview API is for previewing unpublished content as though it were published. It maintains the same endpoints and parameters as the CDA, but delivers the latest draft, updated, and published entries and assets. This is a read-only API API Base URL https://preview.contentful.com Learn more about the Preview API
  38. The primary API for incorporating Contentful content in your front-end

    • Read Only – You can’t accidently change content • Published Only – You can’t accidentally reveal unpublished content • CDN – Calls to this API take advantage of the Contentful CDN Content Delivery API
  39. Details The Content Delivery API (CDA) is a highly available,

    highly scalable, read-only API for delivering content to apps, websites, and other channels. This API is available via a globally distributed content delivery network (CDN) API Base URL https://cdn.contentful.com Content Delivery API
  40. Example Get a single entry - Request GET /spaces/yadj1kx9rmg0/environments/staging/entries /5KsDBWseXY6QegucYAoacS?access_token=fdb4e7a3102747a02

    ea69ebac5e282b9e44d28fb340f778a4f5e788625a61abe - Parameters - space_id yadj1kx9rmg0 - environment_id staging - entry_id 5KsDBWseXY6QegucYAoacS - access_token fdb4e7a3102747a02ea69ebac5e282b9e44 d28fb340f778a4f5e788625a61abe Content Delivery API More details Get a single entry
  41. Content Delivery API Example Get a single entry - Response

    (200 OK) { "sys": { "space": { "sys": { "type": "Link", "linkType": "Space", "id": "yadj1kx9rmg0" } }, "id": "5KsDBWseXY6QegucYAoacS", "type": "Entry", "createdAt": "2017-02-20T17:18:50.583Z", "updatedAt": "2017-02-21T14:29:11.733Z", "environment": { "sys": { "id": "staging", "type": "Link", "linkType": "Environment" } }, "revision": 2, "contentType": { "sys": { "type": "Link", ... "locale": "en-US" }, "fields": { "productName": "Playsam Streamliner Classic Car ... "slug": "playsam-streamliner-classic-car-espresso", "productDescription": "A classic Playsam design ... "image": [{ "sys": { "type": "Link", "linkType" ... "tags": [ "wood", "toy", "car", "sweden", "desi ... "categories": [{ "sys": { "type": "Link","linkT ... "price": 44, "website": "http://www.amazon.com/dp/B001R6JUZ2/" ... More details Get a single entry
  42. Allows you to store a single high quality image in

    Contentful and resize or transform it at delivery time to match the size & quality needed for the requesting device • Read Only – You can’t accidently change content • CDN – Calls to this API take advantage of the Contentful CDN Images API
  43. Images API Details The Contentful Images API allows the retrieval

    and manipulation of image files referenced from assets. In other words, the Images API allows you to resize and crop images, change their background color and convert them to different formats Upload high-quality assets, deliver exactly what your app needs and still get all the benefits of our caching CDN API Base URL https://images.ctfassets.net
  44. Example - Changing formats Image format - Request GET /yadj1kx9rmg0/wtrHxeu3zEoEce2MokCSi/cf6f68efdcf625fdc06

    0607df0f3baef/quwowooybuqbl6ntboz3.jpg?fm=png - Parameters - space_id yadj1kx9rmg0 - asset_id wtrHxeu3zEoEce2MokCSi - token cf6f68efdcf625fdc060607df0f3baef - filename quwowooybuqbl6ntboz3.jpg - image_format fm=png - Response (200 OK) Images API More details Image format
  45. More details Specify width & height Images API Example -

    Resizing & Cropping Specify width & height - Request GET /yadj1kx9rmg0/wtrHxeu3zEoEce2MokCSi/cf6f68efdcf625fdc06 0607df0f3baef/quwowooybuqbl6ntboz3.jpg?w=800&h=600 - Parameters - space_id yadj1kx9rmg0 - asset_id wtrHxeu3zEoEce2MokCSi - token cf6f68efdcf625fdc060607df0f3baef - filename quwowooybuqbl6ntboz3.jpg - width w=800 - height h=600 - Response (200 OK)
  46. What is GraphQL • It is an open-source data query

    and manipulation language for APIs, and a runtime for fulfilling queries with existing data • It allows clients to define the structure of the data required, and exactly the same structure of the data is returned from the server, therefore preventing excessively large amounts of data from being returned • GraphQL schemas are strongly typed - reliably know what type of data is where
  47. • It provides a GraphQL interface to the content from

    Contentful. • Each space has a GraphQL schema based on its content model. The schema is generated at request time so it is always current. • You can use this API to consume both published and unpublished content. • There is query complexity limit currently set to allow retrieval of 11,000 entities in one request • This API supports schema stitching which allows two or more GraphQL APIs to be combined into a single schema that can be presented to a client application GraphQL Content API
  48. Small GraphQL vs. Big REST Rest API call: curl -X

    GET --header "Accept: application/json" --header "Authorization: Bearer ..." "https://api.deutschebahn.com/fasta/v2/stations/1866" GraphQL API call: curl -X POST --header "Content-Type: application/json" --header "Authorization: Bearer ..." -d '{"query": "{stationWithStationNumber(stationNumber: 1866){facilities{type description} }}"}' https://bahnql.herokuapp.com/graphql query{ stationWithStationNumber(stationNumber: 1866){ facilities{ type description } } }
  49. Small GraphQL vs. Big REST Rest API Response: { "stationnumber":

    1866, "name": "Frankfurt (Main) Hbf", "facilities": [ { "equipmentnumber": 10313104, "type": "ESCALATOR", "description": "zu Gleis 103/104 (S-Bahn)", "geocoordX": 8.66231455, "geocoordY": 50.10727055, "state": "INACTIVE", "stateExplanation": "under construction", "stationnumber": 1866 }, { "equipmentnumber": 10313109, "type": "ESCALATOR", "description": "zu Gleis 101/102 (S-Bahn)", "geocoordX": 8.66341625, "geocoordY": 50.1074703, "state": "INACTIVE", "stateExplanation": "under construction", "stationnumber": 1866 }, GraphQL API Response: { "data": { "stationWithEvaId": { "facilities": [ { "type": "ESCALATOR", "description": "zu Gleis 103/104 (S-Bahn)" }, { "type": "ESCALATOR", "description": "zu Gleis 101/102 (S-Bahn)" },
  50. 73 1. Core content modeling concepts 2. Reusable content and

    “assemblies” 3. Inheritance and metadata 4. EXAMPLE: Content modeling for localization Topics
  51. Contentful Domain Model Organizations Top most parent object, connects users

    to a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets. Implications for content modeling 75
  52. What should you store in Contentful? Content • Text •

    Images • Audio/Video • Geo location Micro-Copy • Field labels • Button text • Navigation Localized Content • Localization strategies • Translation permissions/workflows Content Metadata • SEO & Social Media • Images as content types • Tags for navigating the content model Process Metadata • Site functionality (sort, search, etc.) • Editorial workflow • Webhooks Content Modules (“Assemblies”) • Atomic design – chunks not blobs • Giving content creators control over layout • Visual design systems 76
  53. Shared + independent fields 85 Product Name Manufacturer Color Product

    Type (reference) Shoe Size Sole type Heel type Pants Waist Length Type (formal, casual) Shirt Sleeve length Collar Fabric weight You can add or change fields that apply to every product without duplicating the change for every product type
  54. Field level localization vs entry level localization Title Text (FR)

    Field Level Localization Entry Level Localization using Localization Objects Title Slug Text (EN) Text (FR) ... Title Slug Ref 1 Ref 2 ... Title Text (EN) 87
  55. The field Localized is an array that contains an entry

    for each locale Entry level localization - two content types 88 1 2
  56. Contentful Content Modeling Methodology Create a Pool of Sample Designs

    • Conduct an audit of existing content • Create prototypes of future content • Assemble screen shots into a slide deck Create a draft model based on visible fields • Create a list of visible fields from instances of each content type • Reconcile similar fields to create a master list • Group fields into content types of appropriate size & define relationships Revise model for functionality & best practices • Add invisible “meta” fields (for queries, workflow, webhooks, etc.) • Optimize for content creators • Optimize for developers • Implement naming conventions QA: Validate with actual content • Try to “break” the content model by using it to build diverse instances or real world content Test with Content Creators • Watch authors use the content model (usability test) • Create documentation, help and job aids Test with Developers • Have developers QA the model against front-end, migration scripts, etc. Test with Designers • Have designers test the content model by creating a variety of designs Assemble key stakeholders to define strategy • Clarify business objectives • Agree on required functionality • Make strategic content architecture decisions STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 91
  57. 1. Reusable content—change content in one place and it changes

    everywhere 2. Customizable workflow—build the approval process you need 3. Independence—add or change content instantly without the assistance of technical teams 4. Version control—see earlier versions of content and roll back instantly 5. Flexible localization—easily manage country-specific or audience-specific text and images So, what’s in it for Content Authors? Demo 93
  58. • iFrame • Contentful UI Extensions SDK • Allowed languages

    - upto JS ES6 • Integrate Contentful with other platforms • Customise the Contentful Webapp UI to suit your editorial needs What is an UI extension?
  59. Spotify editors can search for artists or songs and embed

    them into new content instantly (no fussing with multiple browser tabs, copy and paste, or human errors). Custom UI for Spotify Artists content creators
  60. • HTTP POST request whenever something happens to your content

    • 18 Pre-built webhooks • Customizable JSON payloads • Triggers can be filtered by action, content type, environment What is a webhook?
  61. 112 1. Why “content as code” 2. CLI Tools 3.

    Space modeling 4. Using Environments for CI/CD 5. 5-steps to managing your content with code 6. Refactoring using the Expand/Contract pattern Topics
  62. Contentful Domain Model Organizations Top most parent object, connects users

    to a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets.
  63. • Use spaces to separate content that has different teams

    or different use cases unless they need to share content • For large scale implementations, consider putting global shared content, team shared content and project-specific content in separate spaces • Roles are specific to a space—use separate spaces if the same users need different permissions Tips for getting the most out of spaces
  64. One space to rule them all Space 1 Used for

    microservice 1 all projects at org Project Spaces Content consists of Assemblies, Topics, and Media Best pattern for use cases where all of the following are true: • Content types and/or content entries are reusable across projects. • Projects all have the same localization needs. • Roles & Permissions provide sufficient access controls across all projects. • Content is intended to be used for multi-channel delivery. • Multiple teams or business units want to collaborate together across projects.
  65. Separate space per project Space 1 Used for microservice 1

    specific content Space 2 Used for microservice 2 specific content Space N Used for microservice N specific content ... Project Spaces Content consists of Assemblies, Topics, and Media Best pattern for use cases where one or more of the following is true: • Content types are not reusable across projects. • Projects have different localization needs. • Roles & permissions cannot be effectively used to create granular access controls. • Business units have a regulatory or legal requirement to keep their project and content separate.
  66. 3-Tier Space Pattern Space 1 Used for microservice 1 specific

    content Space 2 Used for microservice 2 specific content Space N Used for microservice N specific content ... Shared Space Used for highly reusable content across org Global Shared Spaces Project Spaces Shared Space 1 Used for reusable content for line of business 1 BU/Team Shared Spaces Shared Space K Used for reusable content for line of business K ... Content consists of Assemblies, Topics, and Media Requires UI Extension for cross space referencing
  67. Consider the following when deciding which space pattern to utilize:

    • Will governance rules (i.e. user roles and access permissions) be the same or different among the teams and projects? • Will content types be the same and/or shared across projects? • Will projects have the same localization requirements? Same or different set of locales? • Is there a legal or regulatory requirement for projects and their content to be isolated? Things to think about
  68. • Use Microservice Spaces strategy instead of monolithic ones •

    Microservice Spaces could be defined based on: – Business Units – Business Functions – Projects – Content/Dev Teams • Goals: – Reduce dependencies and time-to-market – Improve release/publish lifecycle Space Planning Strategy
  69. 1. Build Build your application and verify that the code

    compiles as expected. 2. Test Run automated tests; unit tests; integration tests. 3. Migrate Run your migration scripts to update your content model for the space/environment you will next deploy to. 4. Deploy Deploy the application to a number of environments. Often to a staging or pre-production environment manually test before deploying to production. 5. Test Run automated end-to-end tests against the environments you deployed your application to in the previous step. CI/CD Best Practice
  70. • Convert master environment into an environment alias • A

    promotion or rollback is achieved by retargeting the alias to another environment – which happens instantly • Production content is served from unscoped/master API routes through the master alias • Currently only master can be an environment alias Environment Aliases In a nutshell
  71. Enabling risk free releases and instant rollbacks master is no

    longer a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Production content is now served from release-2 environment Release 2 release-1 release-2 Environment aliases Change master alias to target release-2 environment master Release 3 release-3 Optional: Delete release-1 environment Production content is now served from release-3 environment Change master alias to target release-3 environment
  72. Minimize downtime and allow instant rollback master is no longer

    a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Change master alias to target release-2 environment Production content is now served from release-2 environment Promote Problem discovered! Rollback is required Rollback Rollback master to target release-1 environment release-1 release-2 Use case: Promote an environment to master master
  73. Better safe than sorry master is no longer a stand-alone

    environment but acts as an alias targeting another environment Content is served from prod environment Run migration scripts Restore by changing master alias to target prod-backup environment Backup Problem discovered! Rollback is required Restore prod prod-backup Use case: Backup and restore master Optional: Delete prod environment prod Optional: Recreate prod from prod-backup Change master alias to target prod environment
  74. 1. Experiment with a content model in the web app

    where you can see JSON output 2. Create the environments you need for CI/CD. Optionally use scripts to clone the master environment. 3. Create a script to programmatically build the full content model 4. Create migration scripts to move content into and out of the content model 5. After testing, propagate your changes into the Prod environment 5 Steps
  75. Explore what content types, fields, validations etc. look like as

    JSON to speed your future script writing. Experiment with different data models. Try to add complex relationships in your model, how is that represented in JSON? 1. Create content types in the web app
  76. Every space has one master environment by default. Each environment

    is a full isolated clone of the master environment. Includes a full copy of all the content types, entries, assets, locales and webhooks. You can setup as many environments as your workflow requires. 2. Set up your initial environments
  77. Use our content-migration tool to create your content model programmatically.

    File: content-model-v1.js Write a script to execute your content model. File: create-model.js Invoke with Contentful CLI against one of the test environment. contentful space migration --space-id abcedef --environment-id feature-wow create-model.js 3. Create a script to build the content model
  78. 4. Create a migration script to update model Programmatically update

    an existing content model, i.e. migrate your content model. File: content-model-animal-v2.js Execute with same script, except use new file: contentful space migration --space-id abcedef --environment-id feature-wow create-model.js Note when you execute a content migration, both the content type and all content entries (records) based on that content type are updated!
  79. 5. Propagate your tested changes to Prod After you have

    tested and verified your changes in sandbox environment, apply the content model migration to production by simply executing the same script but specifying master as target environment. contentful space migration --space-id abcedef --environment-id master create-model.js
  80. Migrations: the “Expand” Phase Content entries such that the changes

    do not prevent the currently released version of the software from running New fields and content types By leaving the existing content in place, while augmenting the content types and content such the new version of the software can also run. The content model can now support both the current version and the new version of your software in parallel. Add Transform
  81. Migrations: the “Contract” Phase Once all users are successfully using

    your new version, the “contract” phase of the migration is to run to remove unneeded content types, fields and content. Remove
  82. Committed structure overview Platform-level features, infrastructure capacity, and expert advice

    tailored to the requirements and objectives of your organization. A space is a content repository serving a single project / team. Guaranteed levels of service uptime and customer support responses for running business-critical websites, apps, and digital properties. The number of users included in the subscription. API calls and asset bandwidth amount included in the subscription and the fees for consuming additional units. Spaces Platform SLA Users Utility limits Platform Spc 1 Spc 2 Spc 3 Spc 4 Spc 5 Spc 6 SLA + +
  83. Space limits (standard spaces) MICRO Master environment 1 Sandbox environments

    1 Roles 1 Locales 2 Content types 24 Records 5,000 MEDIUM Master environment 1 Sandbox environments 3 Roles 2 Locales 7 Content types 48 Records 25,000 SMALL Master environment 1 Sandbox environments 2 Roles 2 Locales 4 Content types 24 Records 10,000 LARGE Master environment 1 Sandbox environments 5 Roles 4 Locales 10 Content types 48 Records 50,000
  84. Space limits (advanced spaces) PERFORMANCE 1X Master environment 1 Sandbox

    environments 10 Custom roles yes Roles 10 Locales 75 Content types 192 Records 250,000 Roles 20 Locales 150 Content types 384 Records 500,000 Roles 7 Locales 30 Content types 96 Records 100,000 PERFORMANCE 2X Master environment 1 Sandbox environments 20 Custom roles yes PERFORMANCE 3X Master environment 1 Sandbox environments 30 Custom roles yes
  85. Space limits (advanced spaces) Roles Unlimited* Locales Unlimited* Content types

    Unlimited* Records Unlimited* PERFORMANCE UNLIMITED Master environment 1 Sandbox environments 150 Custom roles yes *Subject to technical platform limits listed at: https://www.contentful.com/developers/docs/technical-limits/
  86. Platform type Professional Infrastructure type yes Single Sign-On (SSO) yes

    24/7 infrastructure monitoring yes Static webhook IPs yes Encryption in transit yes API white-labelling no Encryption at rest yes Security reporting no Webhook templates yes PCI DSS compliance no Proof-of-Concept (PoC) spaces yes Multi-region delivery infrastructure (MRDI) no
  87. Platform type Scale Infrastructure type yes Single Sign-On (SSO) yes

    24/7 infrastructure monitoring yes Static webhook IPs yes Encryption in transit yes API white-labelling yes Encryption at rest yes Security reporting yes Webhook templates yes PCI DSS compliance yes Proof-of-Concept (PoC) spaces yes Multi-region delivery infrastructure (MRDI) no
  88. Platform type High Availability Infrastructure type yes Single Sign-On (SSO)

    yes 24/7 infrastructure monitoring yes Static webhook IPs yes Encryption in transit yes API white-labelling yes Encryption at rest yes Security reporting yes Webhook templates yes PCI DSS compliance yes Proof-of-Concept (PoC) spaces yes Multi-region delivery infrastructure (MRDI) yes
  89. SLA Plan Components Silver Gold Platinum Platinum** Maximum response time

    Severity 1 (Critical) 8 biz hrs 4 hrs 1 hr 1 hr Severity 2 (High) 16 biz hrs 8 hrs 2 hrs 2 hrs Severity 3 (Standard) 24 biz hrs 8 biz hrs 4 biz hrs 4 biz hrs Service availability Content Delivery API 99.5% 99.7% 99.9% 99.99% Content Management API 99.5% 99.5% 99.5% 99.5% Asset CDN 99.5% 99.7% 99.9% 99.99% **When the customer is on the High Availability platform
  90. Users Description Quantity Unit price Amount Included users 10 Included

    $0 Additional users 0 $x / user $0 Annual fee 10 $0
  91. Usage Included API Calls Bandwidth Standard Space 2,000,000/ month .075

    terabytes/ month Enterprise Space 7,000,000/ month 2 terabytes/ month Overages API Calls Bandwidth Standard Space $5/Million api calls $65/ 1 terabyte Enterprise Space $5/Million api calls $65/ 1 terabyte
  92. LOW MEDIUM HIGH LOW MEDIUM HIGH Technology → Business →

    Digital Products Content Platform Digital Organization Speed or cost-driven Value-driven High performance, high velocity, multi-channel delivery Modern stack site or app Campaign optimization Cross-channel customer journey Innovation hub Non-web interface Global marketing & localization SEO landing pages at scale Digital workforce applications Knowledge portals The path to value What are you building now? What do you aspire to? Agile eCommerce
  93. Legal & privacy Corporate info Design system Products & services

    Mobile phone marketing Contentful facilitates highly reusable architectures Example: a 3-tier content architecture covering the org, teams, and individual applications ← Line-of-business domains GLOBAL Tier 1 spaces for teams focused on highly reusable content APPLICATION Tier 3 spaces for teams focused on app-specific content BUSINESS UNIT Tier 2 spaces for teams focused on line-of-business content ← Org-wide components ← Specific content services Mobile accessories Mobile deals Employee phone program Mobile overview
  94. Contentfulness Collaboration Enable large scale content management based on structured

    content repositories. Use your favorite tools and preferred technology to build your digital architecture. Select the components you need to get started fast, and grow to enterprise scale. Interoperability Composability Structured Content Empower your digital teams to work together to ship products faster. Staying true to our beliefs
  95. Roadmap themes for upcoming year Empowered teams can collaboratively curate,

    create and deliver content across channels and campaigns using agile iterative processes. • Content planning • Content creation & curation • Content delivery pipelines • Growth and execution Content operations at scale Modern experience stack A modern experience management stack enabling teams to build use-case specific solutions through rapid iteration and integration of best-of-breed tools and services. • Open, modular stacks • Seamless orchestration • Cloud performance • Security & compliance
  96. Compliance • ISO 27001 certification • Secure password checks Organization

    management • Roles and Permissions for Teams Content automation • Comments (Alpha) • Workflows App • Scheduled publishing • AI Image Management App (Alpha) Recent Releases Practitioners Developers Create & Manage Build & Deliver • GraphQL API performance optimizations • Custom Entry Editor and Full-page UI extensions • create-contentful-extensions CLI Admin & Scale Productivity • Locale selector (Alpha) • Quick navigation • Rich Text commands Marketing integrations • Optimizely App (Alpha)
  97. Content versions and releases Practitioners Developers Build & Deliver Environments

    and developer workflows Extensibility Platform Content Automation Scheduled Publishing Create & Manage Admin & Scale Q3 Q4 Q1 Content workflows Compliance Asset Security - Milestone 1 Apps Beta Environment Aliases Collaboration Teams improvements
  98. • Schedule publishing of individual entries • Ability to bundle

    a set of content entries and assets into releases which can be operated on directly • Content to exist in different versions so it can be published at different times Scheduling, versions and releases
  99. • Packaged customization of Contentful • Integrations with other services

    • Full support for space environments • Launching with apps for JAMStack, Martech, DAM and eCommerce • Public developer program follows after Apps: Beta Experimentation Live Preview Images Images & Videos Search Video eCommerce CI / CD
  100. • Roles & Permissions for Teams • Addition of capabilities

    for space admins to search, add, and remove Teams from their space Teams improvements
  101. • Release content schema changes with confidence by allowing to

    promote any given environment to the master environment Environment aliases
  102. Environment Aliases Enabling risk free releases and instant rollbacks master

    is no longer a stand-alone environment but acts as an alias pointing to another environment Production content is served from release-1 environment Execute migration scripts Promote release-2 environment to become master Promotion release-1 master release-2 Production content is now served from release-2 environment
  103. The leading content infrastructure for digital teams Customers Partners Investors

    ($78M) >240 employees in Berlin and San Francisco Team 170 +1,000 other customers Technology Partners
  104. So What’s Next? Keep Learning • Developer Certification Program •

    Documentation • Developer Portal • Join our Meetups & Webinars (Gatsby,..) Keep track of new things • Changelog • What’s New Enjoy building with Contentful!
  105. • Adding comments to content for collaboration • Assigning tasks

    to content • Ability for editorial teams to define their own workflow from content creation until its publication Content workflows
  106. Asset Security Milestone 1 - Asset States Est. delivery: EOM

    12/2019 Milestone 2 - Asset States Milestone 3 - Asset Authentication Milestone 4 - To be determined
  107. • Practitioner access for environments: Roles & permissions and content

    creation flows for environments • Space backups: offer options to backup spaces to enable disaster recovery for customers • Developer tooling: support of more advanced developer workflows Developer workflows
  108. • SSO groups provisioning: support user (de)provisioning by enabling user

    roles/permissions via SSO/IDP • Usage reporting enhancements: add support for GraphQL usage reporting and asset bandwidth historical view Org management