About Me

My photo
Rohit leads the Pivotal Labs App Modernization Practice in engineering, delivery training & cross-functional enablement, tooling, scoping, selling, recruiting, marketing, blog posts, webinars and conference sessions. Rohit has led multiple enterprise engagements including ones featured in the Wall Street Journal. Rohit focuses on designing, implementing and consulting with enterprise software solutions for Fortune 500 companies on application migration and modernization.

Thursday, January 28, 2016

Cloud Nativeness of an Application

Questions to determine the cloud readiness of your  application to move to the cloud

Q0 - Pick an appropriate path to the cloud:
    1. Java Buildpack
    2. TomEE Buildpack
    3. JBOSS Buildpack
    4. Liberty Buildpack
    5. WebLogic Buildpack
    6. Fat jar (Bundle app server with app)
    7. Docker





Q1 - Does the application rely on persistent file system ? Do you expect the file system to persist across restarts.
     - Disk Caches
     - Transaction Logs
     - Harcoded File Paths
     - Any java.io.* use needs to be looked at

Q2 - Does the app rely on non HTTP inbound protocol routing.
    - TCP support coming in the near future

Q3 - Does the app take a long time to start or stop
    - any dependencies or semantic ordering between apps

Q4 - Does the app use any native code libs  
    - Those libs need to be recompiled for the PCF Stemcell

Q5 - Does the app require distributed XA 2-phase commit transaction ?

Q6 - Is the app packaged as an ear/war/jar file ?
     - JBOSS buildpack and java buildpack do not support ear files

Q7 - Configuration - How is the app configured.
     - Hardcoded property files
     - Generate one artifact configured based on the environment
     - Where is the config coming from

Q8 - All logging to stdout/stderr
    - No log persistence
    - Use Console appenders

Q9 - What do you use for monitoring today
  - Any agents installed on the OS wont work
  - Agents have to bundled with the app or the app server or the buildpack

Q10 - Size of app should be ideally less than 250MB
    - More than that then you have issues with scaling and cf push

Q11 - Favor external caching instead of in-jvm Caches
      - all caching should be done in a distributed cache outside the app JVM
      - in-JVM caches are transient
      - all state to be managed outside the app via backing services
        - punch firewall holes for all backing services

Q12 - Libraries and Frameworks
    - Use cloud native / cloud friendly frameworks like Spring Cloud etc.?

Q13 - Does your app need specialized hardware in terms of specific CPU/Memory/Disk resources
    - Dependency on specific JVMS/JDKs ?

Q14 - No app server specific HA/Clustering or Administration will work in CF

Q15 - OS based registry security will NOT work on the cloud
    - Rely on  3rd party trust protocols like OAuth or SAML or Authentication and Authorization ?

No comments:

Post a Comment