Building next gen applications and microservices

  • Published on
    16-Apr-2017

  • View
    150

  • Download
    0

Embed Size (px)

Transcript

<p>PowerPoint Presentation</p> <p>Building Next Gen Applications and MicroservicesManuel Silveyra, IBM Open Technologies@manuel_silveyraMay 25, 2016</p> <p>IBM Swift Package Catalog</p> <p>2https://swiftpkgs.ng.bluemix.net/</p> <p>Progression to Microservices3</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>1. From Heavyweight Development to Agile4A consolidation of ideas from Extreme Programming, Scrum, Lean, etc.Tried to remove the overhead and risk of large scale software development by having:Smaller work incrementsFrequent iterationsRapid prototyping</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>2. From Agile to Continuous Integration (CI)5Sought to combine software components as early in the lifecycle as possible in order to minimize the impact of code integration issues.Virtualization and automated testing removed technological barriers to CI.The adoption of Agile led to a growth in CI, which was a common practice in Extreme Programming.</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>3. From CI to Continuous Delivery (CD)6CD defines a deployment pipeline to bring changes to production as quickly as possible.Is an instantiation of Scrums potentially shippable product increment.</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>4. From CD to DevOps7In most organizations development and operations were separate.Organizations where operations and development were together were more successful at establishing CD practices.Engineering approaches were taken to problems that were previously dealt with procedurally.This led to:Higher automation in day to day tasksGreater stability and resilience</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>5. From DevOps to Microservices8The architectural phase where large monolithic applications are broken down into discrete, business focused services.This led to:Higher development parallelizationGreater scalability and utilization</p> <p>Continuous IntegrationAgileHeavyweight developmentContinuous DeploymentDevOpsMicroservices</p> <p>8</p> <p>Microservice OutcomesIncrease SpeedReduce CostImprove ResilienceEnable Visibility9</p> <p>Microservice Keys to Success10</p> <p>Architecture</p> <p>Methodology</p> <p>Technology</p> <p>Organization</p> <p>Organizational SuccessAre teams aligned to business or technology?How are responsibilities divided between teams?At what level of organization are development and operations divided? DevOps or Development and Operations?What are team sizes and skills?Dependencies and cross-team communications?Power distribution between teams?11</p> <p>Architecture</p> <p>Methodology</p> <p>Technology</p> <p>Organization</p> <p>11</p> <p>Methodological SuccessProduct or projects?Agile or waterfall?Who controls business requirements?Fear of change, or continuous delivery?Degree of automation in deployment and operations?12</p> <p>Architecture</p> <p>Methodology</p> <p>Technology</p> <p>Organization</p> <p>12</p> <p>Technological SuccessCloud provisioning?Virtualization? Containerization?Application integration approach?Security and identity management?Operational middleware?Language? Databases?Legacy technologies?13</p> <p>Architecture</p> <p>Methodology</p> <p>Technology</p> <p>Organization</p> <p>13</p> <p>Architectural Example14</p> <p>Architecture</p> <p>Methodology</p> <p>Technology</p> <p>Organization</p> <p>Microservice TechnologiesContainersEncapsulate services and are accessible by IP/port combinationService DiscoveryProvides a way to know when services have been added/removed and where they are locatedService OrchestrationManages service topologiesEnsures availability and utilizationAPI gatewaySecurityRouting15</p> <p>15</p> <p>High Level View</p> <p>Connect to services through HTTPServices communicate through event busServices can be written in whatever language is best for the task and skills availableEach service stores data independently 16</p> <p>Containerized Deployment</p> <p>Services can scale independently according to load without affecting the othersServices connect to external data stores (databases, BLOB stores, etc.)</p> <p>Containers, service discovery, API gateway</p> <p>Efficient/single point of failure17</p> <p>Optimized Containerized DeploymentGroups of services can be collocated on physical systems </p> <p>Containers, service discovery, service orchestration, API gateway</p> <p>Efficient/highly available18</p> <p>Microservice PrinciplesDo One Thing WellBuild AfreshExpect Output to Become InputDont Insist on Interactive InputTry EarlyDont Hesitate to Throw it AwayToolmaking19</p> <p>19</p> <p>20</p>

Recommended

View more >