Techique, Methodology, Culture

Post on 13-Apr-2017

248 views 0 download

transcript

Technique, Methodology, CultureBenny BauerSoftware Architect, Autodeskbenny.bauer@autodesk.com @benikbauer

Rock Climbing Pillars

Mental StrengthPhysical StrengthTechnique

Software Development Pillars

CultureMethodologyTechnique

AutoCAD 360 Backend

2008Created

200K

LOC

TechnologyJava, Tomcat,

MySQL

Culture

Methodology

Technique

Phase 1: RPC

AutoCAD 360 API Evolution

RPC

HTTP AdapterServlet

Phase 2: Adapter Servlet

Logical endpoints HTTP methods Versioning Json payload

HTTP

Phase 3: RESTful APIs

Monolithic Architecture - Cons

Hard to keep modular design Full application deployment

even on minor change Scaling is horizontal Large code base is scary Hard to adopt new

technology Hard to scale development

“Microservices are small, autonomous services that work together…”

Introducing Microservices

“… built around business capabilities and independently deployable by fully automated deployment machinery”

(“Building Microservices” by Sam Newman)

Definition – continued

“…There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.”

(“Building Microservices” by Sam Newman)

Definition – continued

Microservices Architecture

HTTP

Phase 4: Microservices

Increased Operational Complexity Build, Testing, Deployment Monitoring Maintenance

Distributed System Complexity Network latency Asynchronicity Fault tolerance Message serialization, versioning

Microservices - Cons

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

-- Melvyn Conway, 1967

Conway’s Law

Next phase: Serverless Architecture?

CultureTechnique

Methodology

Release to production at any time!

Why? Get feedback soon & often Frequent deployments -> Smaller changes ->

Lower risk Developer happiness

*Etsy: “Optimizing for developer happiness”

Methodology #1 - Continuous Delivery

HOW?First you need Continuous Integration

Continuous Delivery

Commit

Build

Test

Store Artifact

Then you can deploy

Continuous Delivery

and monitor!

Methodology #2 – Data Driven

Production stability

Performance

Exceptions

Builds stability

Usage analytics

Data Driven

Data Driven

Be deliberate Requirements – How the feature will be measured

Design - How performance will be measured

Tools: Statsd & Grafana, New Relic, Splunk

Paint the walls with dashboards

Data Driven

We start with a Walking Skeleton:

Make something work end-to-end

Wrap it with CI

Now, add more meat

Methodology #3 – Walking Skeleton

We strive to have maximal test coverage: New code – mocking & dependency injection

Legacy code – only changes are tested

“Aggressive mocking” when no other choice

Methodology #4 – Testing

Testing

Mocking +

Dependency Injection

Aggressive MockingNo Tests

Methodology #5 – Code Reviews

Better

Correct

Clean

At least 2 reviewers

Done within 24h

Asynchronous & Documented (“code collaborator”)

Frequent & Small

Code Reviews

Start with a walking skeleton

Confirm functionality with testing

Increase quality with code reviews

Get insights and drive actions from data

Wrap it all in Continuous Delivery

Methodology Summary

Methodology

Technique Culture

Autodesk TLV

What is Culture?

If methodology is the how, then culture is the why

Culture evolves naturally,but hacks can give it a boost

“Building a Dream Team”

Culture #1 – Stating our Vision

PYTA (Pick Your TAsk)

PYTA (Pick Your TAsk)

It got us to Apple’s keynote

Bazinga!

Guilds

A group of people that work on the same technical

domain and will love to spread the knowledge

internally and externally

Guilds

Guilds

Master: A guild leader, preferably not a manager

Sponsor: Master’s go-to guy

Activities: Organizing Meetups

Shared projects

“Army reserve”

Sharing knowledge

Brainstorming

Mingling

Open Source

Blogging

Bubbles (Lightning Talks)

CultureMethodologyTechnique

Questions?

Thanks

Autodesk is a registered trademark of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document.© 2015 Autodesk. All rights reserved.