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.

Trends in software architecture: a professional (des)orientation

366 views

Published on

Invited talk to the Software Architecture course at the Bachelor Degree in Computer Science of the University of Oviedo. Further details at https://ingenieriainformatica.uniovi.es/actualidad/eventos/-/asset_publisher/uS6D/content/deteccion-de-sesgo-algoritmico-1

Published in: Software
  • Be the first to comment

Trends in software architecture: a professional (des)orientation

  1. 1. School of Computer Science Trends in Software Architecture a professional (des)orientation Sergio Fernández Software Development Engineer (Amazon) Oviedo, 30/01/2019 Software Architecture, Bachelor Degree in Computer Science
  2. 2. DISCLAIMER: The content in this presentation was created for academic purposes. All the opinions expressed here are my own and do not necessarily represent those of my current or past employers.
  3. 3. Sergio Fernández Some background about myself: ● Asturian Software Engineer ● Graduated from this same school ● Currently based in Vancouver ● Software Development Engineer at Amazon ● Advocate of open technologies ● Member of the Apache Software Foundation
  4. 4. 4 Jan 2006: joined CTIC Foundation Feb 2008: visited DERI (Ireland) Aug 2017: joined Amazon (Canada) May 2012: joined Salzburg Research (Austria) Mar 2013: founded Redlink GmbH (Austria) Dec 2006: graduated Bachelor Degree Jul 2010: graduated Master Degree Dec 2012: joined ASF Feb 2015: lecturing at Fachhochschule Salzburg (Austria) Oct 2011: lecturing at ESNE May 2007: won 1st Free Software University Spanish Contest
  5. 5. School of Computer Science Outline for today • Software Architecture overview • Trends in software architectures • Architecting software at scale • Professional opportunities • Q&A 5
  6. 6. School of Computer Science Traditionally architecture is defined as “the highest level concept of a system in its environment. The architecture of a software system (at a given point in time) is its organization or structure of significant components interacting through interfaces, those components being composed of successively smaller components and interfaces.” 6
  7. 7. Martin Fowler defines it “as a word we use when we want to talk about design but want to puff it up to make it sound important.” https://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
  8. 8. Are Right, a Lot.
  9. 9. Desired features of any software architecture ● Feasibility ● Performance ● Reliability ● Testability ● Maintainability ● Extensibility ● Agility
  10. 10. The General Problem https://xkcd.com/974/
  11. 11. Evolution of Software Architecture https://twitter.com/richcampbell/stats/1078727465974067200
  12. 12. School of Computer Science Scaling problem Given a service with the following metrics on c5.2xlarge: • concurrency=1, latency: p90=20ms, p99=100ms • concurrency=10, latency: p90=120ms, p99=500ms • concurrency=20, latency: p90=200ms, p99=700ms • concurrency=50, latency: p90=800ms, p99=2s • concurrency=100, latency: p90=1s, p99=3s How would you scale it to 4,000 TPS (avg.) and 10,000 TPS (max.)? 12
  13. 13. School of Computer Science 13 Monolithic SOA Microservices Single Unit Coarse-grained Fine-grained
  14. 14. School of Computer Science 14
  15. 15. School of Computer Science Understanding the tradeoffs 15
  16. 16. stateful services scaling is far more complex than stateless services
  17. 17. Handling increasing complexity
  18. 18. Distributed overhead ● Continuous Delivery and dependencies ● Integration testing ● New computation environments: containers, serverless, etc. ● Data partitioning and consistency ● Messaging: queues, pubsub, etc. ● Logging and monitoring ● Networking: load balancing, service discovery, etc.
  19. 19. AWS Architecture Center https://aws.amazon.com/architecture/
  20. 20. Data management solutions powering distributed architectures ● Replicated databases ○ Single-leader replication ○ Multi-leader replication ○ Leaderless replication (e.g., DynamoDB) ● Partitioned databases (e.g., PostgreSQL) ○ Horizontal Partitioning (aka Sharding) ○ Vertical Partitioning ● Native decentralized databases, e.g. Linked Data
  21. 21. Replicating Data: the CAP theorem CAP theorem, Eric Brewer (2000)
  22. 22. position Software Architect is a role
  23. 23. Skills of a Software Architect ● Cross-functional ● Broad experience ● Deeply technical ● Communication
  24. 24. “You build it, you run it!” Werner Vogels, VP & CTO at Amazon.com
  25. 25. Amazon’s Leadership Principles ● Customer Obsession ● Ownership ● Invent and Simplify ● Are Right, A Lot ● Learn and Be Curious ● Hire and Develop the Best ● Insist on the Highest Standards ● Think Big ● Bias for Action ● Frugality ● Earn Trust ● Dive Deep ● Have Backbone; Disagree and Commit ● Deliver Results https://www.amazon.jobs/en/principles
  26. 26. School of Computer Science Career Opportunities www.amazon.jobs 26
  27. 27. Q&A School of Computer Science
  28. 28. sergio@wikier.org web twitter email
  29. 29. Laboratory Assignment (Labra) The goal is to create DeChat, a decentralized chat app based on the Solid Specifications. The system will be developed by teams of 5-8 students as part of their Software Architecture course. High level requirements ● The system will be based on a decentralized architecture where data storage is separated from the app ● Users can store their chat data in their own pods ● The app will allow a user to share pictures, videos or other kinds of files with other friends through the chat ● A user can get notifications when some friend wants to chat with him ● Users can have groups of friends with whom they may want to chat ● It will be possible to have group chats where all members receive the messages

×