Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

What is your PaaS


Published on

Presentation about the considerations and challenges when adopting a PaaS

Published in: Technology
  • Be the first to comment

  • Be the first to like this

What is your PaaS

  1. 1. What is your PaaS William Greenly, Jio, 2016
  2. 2. Background Platform as a Service is a relatively new term for something that has been around for a while. Prior to 2010, most platforms as a service were on premise and proprietary, with high vendor tie in and low interoperability e.g Oracle, Java, Microsoft, or were primitive sandboxes provided by hosting providers. Now there are ever increasing platforms and building blocks that are freely available to help you deliver your Platforms as a Service
  3. 3. Considerations Solutions nowadays come in a variety of forms, some proprietary and fully hosted, some that is open source and can be deployed on premise or in the cloud. They vary by opinion and interoperability with other platform and application building blocks Irrespective, all solutions are not specific enough for your enterprise or organisation and should simply be considered as building blocks themselves So it’s first worth understanding what you requirements are before you can identify your PaaS!
  4. 4. Goals A PaaS is foundational and is the cornerstone of your enterprise It’s about encapsulating your engineering principles in a set of enterprise specific building blocks... … that ensures repeatability, predictability and consistency It is the successor to traditional ‘Enterprise Architecture’ without all the cruft
  5. 5. Goals Platform Applications Infrastructure Often Overlooked
  6. 6. Overview The Software Development Lifecycle (build, test, deploy) Service Production Service Discovery and Service Configuration Persistence, Storage and Event Sourcing Security and Identity
  7. 7. The Software Development Lifecycle Understand what your technology deliverables are. A good mantra is ‘Libraries’, ‘Distributions’ and ‘Solutions’: ● Libraries are software components that have no runtime, but are included in other projects ● Distributions have runtimes and can be executed either on the host os, as a container or on a hypervisor. Examples include an Executable JAR, a WAR, a binary executable, a Docker Image, a VSphere Image, an AMI ● Solutions are configurations and profiles of Distributions orchestrated, attached and integrated with platform or 3rd party services: e.g Your SaaS HTTP API, your ecommerce website.
  8. 8. The Software Development Lifecycle Every library, distribution or solution, features some or all of the following: ● Source Control Management ● Dependency Management ● Versioning ● Binary Repositories ● Project build tools ● Testing Frameworks ● Continuous Integration ● Build, Test, Deploy
  9. 9. Source Control Management Across your team, organisation or enterprise, agree a consistent way to use source control management Pure Continuous Integration encourages zero branches But find the pattern that is right and be consistent e.g gitflow, github flow, zero branch
  10. 10. Project Archetypes A template for libraries, distributions (e.g microservices, console applications) Contains configuration specific to your organisation e.g dependencies, artifact repositories Also encapsulates the required SDLC tasks, e.g build, test, deploy Versioning, see Semantic Versioning
  11. 11. Testing Treat non-functionals as first class citizens and have acceptance criteria built in and are incorporated into the project archetypes Tip! Provide emulators for distributions as a means to support testing, as part of your product. This reduces the risk of client contracts becoming inconsistent with the 3rd party api.
  12. 12. Continuous Integration Is a principle, not a solution (e.g just using Jenkins is not doing continuous integration) Information radiators and static analysis provide transparency to your organisation Build, test and deploy gating
  13. 13. Services in Production Provisioning and compute Scaling and replication Monitoring and Health Checking Logging
  14. 14. Service Discovery and Configuration Service Capabilities Service Availability Service Discovery Application Configuration
  15. 15. Persistence, Storage and Event Streams Covers things like datastores, file systems, object stores, messaging and distributed transaction logs Look to take advantage of more modern datastores - Schemaless, resource base, e.g GraphStores The distributed transaction log becomes the lifeblood of your system that all solutions plug into JSON-LD makes a great interchange for use on event streams since It encourages URI’s and linking data Database migration tools for non event stream data e.g Flyway
  16. 16. Security and Identity Identity management and access control Authentication and authorisation
  17. 17. What is my PaaS? ● Git - Bitbucket - 1 remote branch max, short lived local branches acceptable ● LazyBones for project archetypes ● Gradle for versioning, dependencies, build, test and deploy ● Artifactory, bintray and docker hub as binary repositories ● Spock, Geb, Gatling, ZapProxy for testing and part of project archetypes and CI ● Jenkins CI and Job DSL ● Docker for distributions ● Kubernetes for service production. Kubernetes runs locally! ● SkyDNS Kubernetes (RFC 6763, 2782) for service discovery ● OwnCloud, S3, Fuseki for persistence and datastore
  18. 18. What is your PaaS?