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.

Sustainable software development / Jätkusuutlik tarkvaraarendus


Published on

Agile software development company AgileWorks talks about the aspects necessary to keep in mind for sustainable software development.

Find out more on

Published in: Software
  • Be the first to comment

Sustainable software development / Jätkusuutlik tarkvaraarendus

  1. 1. Sustainable software development Karel Golberg / Arni Leibovitš
  2. 2. Waterfall model Requirements Analysis Design Programming Testing Delivery
  3. 3. Agile approach Development Testing Delivery Retrospective Planning, selecting user stories User story 1 User story 2 User story 3 User story 4 User story 5
  4. 4. The Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan OUR VALUES Agile Goal oriented Effective Responsible Involving Fast Passionate Transparent Cutting-edge Flexible Comprehensible
  5. 5. Does software work? 1. Test it 2. Test it 3. Also… test it ▪ Testing is time and resource intensive
  6. 6. Test-driven development • Development practice where a test is written first, functionality second. ▪ Benefits of TDD ▪ Immediate feedback ▪ Ensures changes don’t break existing code – sustainable development ▪ Focus on code design ▪ Keeps components small and responsibilities clear ▪ Allows testing numerous combinations ▪ No time to write tests?
  7. 7. Continuous Integration • Build server (we use TeamCity) • Each code change triggers a build • Automated tests are run • Fast feedback about errors • Automatic deployment to client test environment
  8. 8. Cloud services Infrastructure as a Service (IaaS) ▪ AWS ▪ Azure Platform as a Service (PaaS) ▪ AWS Elastic Beanstalk ▪ Azure App Service ▪ Google App Engine ▪ Apcera Containers as a Service (CaaS) ▪ Kubernetes ▪ Azure Container Service ▪ Google Container Engine ▪ Amazon EC2 Container Service Functions as a Service (FaaS) ▪ AWS Lambda ▪ Azure Functions Software as a Service (SaaS) ▪ Databases ▪ Search services (Elasticsearch) ▪ AI services
  9. 9. Containers OS kernel Docker Ubuntu .NET Core Application A Alpine Tomcat + Java Application B Debian Elixir Application C
  10. 10. Microservices ▪ Benefits ▪ Flexible scaling ▪ System components isolated ▪ Use various technologies ▪ Faster development and deployment ▪ Better re-use ▪ Not a silver bullet ▪ Contains ballast ▪ Too “micro” can cause friction ▪ May be difficult to divide functionality correctly into services ▪ More difficult to test ▪ Perhaps reasonably sized services?
  11. 11. Monolith ▪ Not a problem when good practices are followed ▪ Solid code base (code reviews, automated tests) ▪ Modular structure ▪ Developed incrementally (agile) ▪ Continuous integration and deployment ▪ May move parts into separate services ▪ Extend using microservices ▪ May start with a monolith and later move to microservices
  12. 12. Open source ▪ Läbipaistvus ▪ Usaldatavus ▪ Turvalisus ▪ Kvaliteet ▪ Transparency ▪ Trustworthiness ▪ Security ▪ Quality
  13. 13. Thank you for listening!
  14. 14. ▪ Years of experience ▪ Specialised higher education ▪ Result oriented ▪ Ready to react to changes at any time ▪ Teamwork ▪ Constant progress and learning ▪ Applying agile principles