Building Next Generation Applications and Microservices

  • Published on
    20-Jan-2017

  • View
    34

  • Download
    1

Embed Size (px)

Transcript

<ul><li><p>Building Next Gen Applications and Microservices</p><p>Manuel Silveyra</p><p>@manuel_silveyra</p><p>May 25, 2016</p></li><li><p>IBM Swift Package Catalog</p><p>2</p><p>https://swiftpkgs.ng.bluemix.net/</p></li><li><p>Progression to Microservices</p><p>3</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>1. From Heavyweight Development to Agile</p><p>4</p><p> A consolidation of ideas from Extreme Programming, Scrum, </p><p>Lean, etc.</p><p> Tried to remove the overhead and risk of large scale software </p><p>development by having:</p><p> Smaller work increments</p><p> Frequent iterations</p><p> Rapid prototyping</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>2. From Agile to Continuous Integration (CI)</p><p>5</p><p> Sought to combine software components as early in the </p><p>lifecycle as possible in order to minimize the impact of </p><p>code integration issues.</p><p> Virtualization and automated testing removed </p><p>technological barriers to CI.</p><p> The adoption of Agile led to a growth in CI, which was a </p><p>common practice in Extreme Programming.</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>3. From CI to Continuous Delivery (CD)</p><p>6</p><p> CD defines a deployment pipeline to bring changes to production as </p><p>quickly as possible.</p><p> Is an instantiation of Scrums potentially shippable product </p><p>increment.</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>4. From CD to DevOps</p><p>7</p><p> In most organizations development and operations were separate.</p><p> Organizations where operations and development were together were more successful at establishing CD practices.</p><p> Engineering approaches were taken to problems that were previously dealt with procedurally.</p><p> This led to:</p><p> Higher automation in day to day tasks</p><p> Greater stability and resilience</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>5. From DevOps to Microservices</p><p>8</p><p> The architectural phase where large monolithic applications are broken down into discrete, business focused services.</p><p> This led to:</p><p> Higher development parallelization</p><p> Greater scalability and utilization</p><p>Continuous Integration</p><p>Agile</p><p>Heavyweight development</p><p>Continuous Deployment</p><p>DevOps</p><p>Microservices</p></li><li><p>Microservice Outcomes</p><p> Increase Speed</p><p> Reduce Cost</p><p> Improve Resilience</p><p> Enable Visibility</p><p>9</p></li><li><p>Microservice Keys to Success</p><p>10</p><p>Organization</p><p>MethodologyTechnology</p></li><li><p>Organizational Success</p><p> Are teams aligned to business or technology?</p><p> How are responsibilities divided between </p><p>teams?</p><p> At what level of organization are </p><p>development and operations divided? </p><p>DevOps or Development and Operations?</p><p> What are team sizes and skills?</p><p> Dependencies and cross-team </p><p>communications?</p><p> Power distribution between teams?</p><p>11</p><p>Organization</p><p>MethodologyTechnology</p></li><li><p>Methodological Success</p><p> Product or projects?</p><p> Agile or waterfall?</p><p> Who controls business requirements?</p><p> Fear of change, or continuous delivery?</p><p> Degree of automation in deployment and </p><p>operations?</p><p>12</p><p>Organization</p><p>MethodologyTechnology</p></li><li><p>Technological Success</p><p> Cloud provisioning?</p><p> Virtualization? Containerization?</p><p> Application integration approach?</p><p> Security and identity management?</p><p> Operational middleware?</p><p> Language? Databases?</p><p> Legacy technologies?</p><p>13</p><p>Organization</p><p>MethodologyTechnology</p></li><li><p>Microservice Exercise</p><p>14</p></li><li><p>Microservice Technologies</p><p> Containers</p><p> Encapsulate services and are accessible by IP/port combination</p><p> Service Discovery</p><p> Provides a way to know when services have been added/removed and where </p><p>they are located</p><p> Service Orchestration</p><p> Manages service topologies</p><p> Ensures availability and utilization</p><p> API gateway</p><p> Security</p><p> Routing</p><p>15</p></li><li><p>High Level View</p><p> Connect to services through HTTP</p><p> Services communicate through </p><p>event bus</p><p> Services can be written in </p><p>whatever language is best for the </p><p>task and skills available</p><p> Each service stores data </p><p>independently </p><p>16</p></li><li><p>Containerized Deployment</p><p> Services can scale independently </p><p>according to load without </p><p>affecting the others</p><p> Services connect to external data </p><p>stores (databases, BLOB stores, </p><p>etc.)</p><p> Containers, service discovery, API </p><p>gateway</p><p> Efficient/single point of failure</p><p>17</p></li><li><p>Optimized Containerized Deployment</p><p> Groups of services can be </p><p>collocated on physical systems </p><p> Containers, service discovery, </p><p>service orchestration, API </p><p>gateway</p><p> Efficient/highly available</p><p>18</p></li><li><p>Microservice Principles</p><p> Do One Thing Well</p><p> Build Afresh</p><p> Expect Output to Become Input</p><p> Dont Insist on Interactive Input</p><p> Try Early</p><p> Dont Hesitate to Throw it Away</p><p> Toolmaking</p><p>19</p></li><li><p>20</p></li><li><p>Microservice Platform</p><p>Shared Capabilities</p><p> Hardware services</p><p> Code management, testing, and </p><p>deployment</p><p> Data stores</p><p> Service orchestration</p><p> Security and identity</p><p> Architectural policy</p><p>Local Capabilities</p><p> General tooling</p><p> Runtime configuration</p><p> Service discovery</p><p> Request routing </p><p> System observability</p><p>21</p></li></ul>