SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
 	
  
So#ware	
  Architecture	
  
Reversim	
  Summit	
  2014	
  
Why	
  do	
  we	
  need	
  architecture?	
  
	
  
What	
  it	
  is	
  good	
  for?	
  
	
  
Is	
  there	
  a	
  role	
  for	
  an	
  Architect?	
  
Architecture	
  is	
  both	
  the	
  process	
  and	
  the	
  
product	
  of	
  planning,	
  designing,	
  and	
  construcBng	
  
buildings	
  and	
  other	
  physical	
  structures.	
  	
  
Architecture	
  is	
  both	
  the	
  process	
  and	
  the	
  
product	
  of	
  planning,	
  designing,	
  and	
  construcBng	
  
so#ware	
  products	
  and	
  other	
  so#ware	
  systems.	
  	
  
Is	
  this	
  soDware	
  architecture?	
  
•  It	
  looks	
  like	
  a	
  blueprint	
  
	
  
Is	
  this	
  soDware	
  architecture?	
  
However	
  
•  The	
  main	
  funcBon	
  of	
  a	
  building	
  is	
  sta4c	
  
•  The	
  main	
  funcBon	
  of	
  soDware	
  is	
  dynamic	
  	
  
–  Good	
  soDware	
  react	
  to	
  user	
  input	
  and	
  different	
  external	
  events	
  
–  SoDware	
  evolves	
  with	
  Bme	
  
	
  
A	
  Blueprint	
  is	
  not	
  a	
  good	
  representa4on	
  of	
  so#ware	
  architecture!	
  
Is	
  this	
  soDware	
  architecture?	
  
What	
  is	
  SoDware	
  Architecture?	
  
• Code	
  dependencies	
  
• TesBng	
  dependencies	
  
• Deployment	
  
dependencies	
  
• VPNs	
  
• VLANs	
  
• Routers	
  
• Switches	
  
• CP	
  vs	
  AP	
  
• Data	
  layout	
  
• OpBmizaBon	
  
• Process	
  interacBons	
  
• SLA	
  
• Data	
  centers	
  
• Failure	
  recovery	
  
RunBme	
   Data	
  
Build	
  Network	
  
RunBme	
  Architecture	
  
It’s	
  about	
  the	
  runBme	
  construcBon	
  of	
  soDware	
  
•  A	
  soDware	
  system	
  is	
  built	
  of	
  OS	
  processes	
  
–  Deployed	
  on	
  one	
  or	
  more	
  hosts	
  
•  The	
  Processes	
  collabora4on	
  is	
  the	
  so#ware	
  system	
  
–  InteracBons	
  via	
  RPC,	
  web	
  services,	
  MQs,	
  BUS,	
  shared	
  memory,	
  files,	
  etc.	
  
•  Process	
  interacBons	
  with	
  data	
  storage	
  
–  Databases,	
  NoSQL	
  engines,	
  disks,	
  data	
  store	
  APIs	
  
•  Reverse	
  Proxies,	
  Service	
  Bus	
  
–  Non-­‐funcBonal	
  facilitators	
  of	
  interacBons	
  between	
  processes	
  
ConsideraBons	
  for	
  	
  
RunBme	
  Architecture	
  
•  Resource	
  Management	
  and	
  Capacity	
  Planning	
  
–  CPU,	
  disk	
  &	
  network	
  (IO),	
  resource	
  pools	
  (threads,	
  DB	
  connecBons)	
  
•  Service	
  Level	
  Requirements	
  /	
  Agreements	
  
–  Availability	
  requirements,	
  DRP,	
  performance,	
  etc.	
  
•  OrganizaBonal	
  Structure	
  
•  When	
  shit	
  hits	
  the	
  fans	
  
–  Self	
  healing	
  systems	
  vs	
  terminal	
  failures	
  
–  Containment	
  of	
  failures	
  
•  “Browser	
  land”	
  
–  Security	
  &	
  cross	
  domain	
  constraints	
  
•  CAP	
  Theorem	
  
•  Note:	
  cache	
  is	
  not	
  part	
  of	
  an	
  architecture	
  –	
  it	
  is	
  an	
  opBmizaBon	
  
Data	
  Architecture	
  
It’s	
  about	
  your	
  data	
  
•  What	
  is	
  your	
  data?	
  
•  What	
  is	
  the	
  structure	
  of	
  the	
  data?	
  
–  RelaBonal,	
  columnar,	
  doc,	
  key/value,	
  events,	
  search	
  index,	
  queues,	
  graph,	
  
logs,	
  unstructured,	
  pictures,	
  CRDTs	
  …	
  
Create	
  
Cart	
  
Add	
  item	
  
Add	
  item	
  
Remove	
  
item	
  
checkout	
  
key	
   value	
  
key	
   value	
  
key	
   value	
  
key	
   value	
  
key	
   value	
  
Column	
  1	
   2	
   Noddle	
  
1	
   Pig	
  
Spider	
  
Cookie	
  
A	
   3	
   Killer	
  
B	
   4	
   Dipface	
  
C	
   5	
   Swamp	
  
D	
   6	
   Donkey	
  
E	
   7	
   Wooly	
  
F	
   8	
   Weasel	
  
H	
  
G	
  
10	
  
9	
  
J	
  
I	
  
Column	
  2	
  
Column	
  3	
  
Data	
  Architecture	
  
How	
  do	
  you	
  use	
  your	
  data?	
  
•  Read	
  paoern?	
  
–  RelaBonal,	
  object,	
  CQRS	
  (Query	
  SegregaBon),	
  Bme	
  series,	
  	
  
event	
  sourcing,	
  map	
  reduce,	
  full	
  table	
  scans	
  
–  OperaBonal,	
  offline	
  and	
  realBme	
  –	
  the	
  three	
  scopes	
  of	
  data	
  analysis	
  
•  Write	
  paoern?	
  
–  OperaBonal,	
  ETLs,	
  data	
  imports	
  
•  Search	
  paoern?	
  
–  By	
  field	
  filters,	
  full	
  text	
  search,	
  links	
  (between	
  items),	
  relaBons	
  
•  Data	
  Mutability	
  
–  Is	
  your	
  data	
  mutable	
  (e.g.	
  update	
  &	
  delete	
  operaBons)?	
  
ConsideraBons	
  for	
  
Data	
  Architecture	
  
•  CP	
  vs	
  AP	
  –	
  Consistency	
  vs	
  Availability	
  
–  CAP	
  theorem	
  mandates	
  you	
  cannot	
  get	
  both	
  (unless	
  you	
  allow	
  split	
  brain…)	
  
–  CRDTs	
  -­‐	
  CommutaBve	
  (or	
  Conflict	
  free)	
  Replicated	
  Data	
  Types	
  
•  Eventual	
  Consistency	
  
–  Can	
  you	
  model	
  your	
  system	
  to	
  cope	
  with	
  a	
  certain	
  level	
  of	
  inconsistency?	
  
•  Performance	
  vs	
  Size	
  vs	
  Features	
  
–  OpBmize	
  for	
  fast	
  reads	
  /	
  fast	
  writes	
  /	
  huge	
  size	
  /	
  complex	
  queries	
  &	
  MR	
  
•  DRP	
  
–  What	
  happens	
  if	
  your	
  engine	
  dies?	
  
–  What	
  happens	
  if	
  your	
  data	
  get	
  poisoned?	
  
Build	
  Architecture	
  
It’s	
  about	
  how	
  you	
  Build	
  your	
  code	
  
Build	
  ConsideraBons	
  
•  Dependencies	
  
–  Code,	
  Jar,	
  Build,	
  TesBng	
  &	
  Deployment	
  dependencies	
  
•  Build	
  pipeline	
  
–  Building	
  dependencies	
  in	
  order	
  
–  Building	
  against	
  the	
  right	
  dependencies	
  
•  Minimize	
  building	
  and	
  tesBng	
  Bme	
  
•  Version	
  management	
  
–  Major.minor.build.patch.fix.test….	
  
–  Do	
  we	
  need	
  versions	
  at	
  all?	
  
	
  
Build	
  Architecture	
  
Dependencies	
  
•  The	
  root	
  of	
  all	
  evil	
  –	
  reuse	
  
–  Dependencies	
  are	
  introduced	
  because	
  component	
  A	
  uses	
  component	
  B	
  
–  Without	
  reuse,	
  there	
  are	
  no	
  dependencies	
  
•  Diamond	
  problem	
  
–  Manual	
  dependency progression	
  (Maven,	
  Ivy)	
  
–  AutomaBc	
  dependency	
  progression	
  (conBnuous	
  delivery)	
  
–  “Pick	
  your	
  poison”	
  dependency	
  progression	
  (NPM)	
  
•  Dependencies	
  complexity	
  
–  Complexity	
  is	
  an	
  exponenBal	
  funcBon	
  	
  
of	
  the	
  number	
  of	
  components	
  
D	
  
C	
  B	
  
A	
  1.1	
  
A	
  1.0	
  
Build	
  Architecture	
  
It’s	
  about	
  how	
  you	
  Deploy	
  your	
  code	
  
•  Deployment	
  
–  Decoupling	
  deployment	
  from	
  feature	
  release	
  
–  Automated	
  deployment	
  
–  Zero-­‐downBme	
  deployment	
  
•  Rolling	
  updates,	
  parallel	
  clusters	
  (Netlix)	
  
–  MulBple-­‐environment	
  support	
  
•  Development,	
  Debugging,	
  TesBng,	
  Staging,	
  ProducBon	
  
•  Post-­‐Deployment	
  
–  A/B	
  tests	
  
–  Feature	
  Toggles	
  
–  Immune	
  system	
  
•  Startup	
  tests,	
  post	
  deployment	
  monitoring	
  
–  Automated	
  rollback	
  
What	
  about	
  Code	
  Level	
  Architecture?	
  
I	
  do	
  not	
  believe	
  there	
  is	
  “code-­‐level	
  architecture”	
  
	
  
•  Coding	
  is	
  Engineering	
  
–  WriBng	
  modular	
  code,	
  maintainable	
  code,	
  testable	
  code	
  
–  Design	
  paoerns	
  are	
  a	
  theoreBcal	
  tool	
  
•  Architecture	
  is	
  about	
  real-­‐worlds	
  constraints	
  
–  In	
  an	
  ideal	
  world	
  –	
  infinite	
  space,	
  infinite	
  performance,	
  infinite	
  consistency	
  
magic	
  database	
  –	
  do	
  we	
  need	
  architecture?	
  
•  Coding	
  by	
  itself	
  is	
  in	
  a	
  mathemaBcal	
  exercise,	
  in	
  a	
  theoreBcal	
  domain.	
  
–  Only	
  when	
  introducing	
  “real-­‐world”	
  constraints	
  do	
  we	
  need	
  architecture	
  
The	
  Architect	
  Role	
  
Architect Architecture
!=
Anyone	
  can	
  do	
  architecture	
  	
  
Everyone	
  should	
  do	
  architecture	
  	
  
So	
  what	
  is	
  the	
  role	
  of	
  the	
  	
  
Architect?	
  
Lets	
  consider	
  a	
  product	
  
A	
  Hotel	
  Management	
  system	
  
Frontend	
  UI	
  
Hotel	
  &	
  Room	
  
Management	
  
ReservaBons	
  Checkout	
  
Backoffice	
  UI	
  
Frontend	
  
Server	
  
MySQL	
  
ElasBc	
  
Search	
  
Payment	
  
Provider	
  
The	
  teams	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
And	
  a	
  Feature	
  
Search	
  for	
  available	
  rooms	
  
•  Query	
  the	
  Hotel	
  &	
  Room	
  
Management	
  service	
  for	
  the	
  
rooms	
  that	
  fit	
  the	
  search	
  
–  By	
  hotel	
  star	
  raBng,	
  review	
  
score,	
  etc.	
  
•  Query	
  the	
  ReservaBon	
  service	
  
to	
  find	
  available	
  rooms	
  
–  By	
  availability	
  of	
  rooms,	
  based	
  
on	
  current	
  reservaBons	
  
The	
  Hotel	
  Search	
  Feature?	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
Are	
  
you	
  
real???	
  
1.  Frontend	
  calls	
  Hotels	
  &	
  Rooms	
  Man.	
  
for	
  the	
  search,	
  gets	
  back	
  a	
  few	
  pages	
  
of	
  rooms.	
  	
  
2.  Then,	
  it	
  calls	
  ReservaBons	
  with	
  the	
  
results	
  to	
  filter	
  out	
  unavailable	
  rooms	
  
	
  
The	
  Hotel	
  Search	
  Feature?	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
No	
  
Hacks	
  
Here!	
  
1.  Frontend	
  calls	
  Hotels	
  &	
  Rooms	
  Man.	
  
for	
  the	
  search	
  
2.  Hotels	
  &	
  Rooms	
  Man.	
  searches	
  for	
  the	
  
right	
  rooms	
  
3.  Then,	
  it	
  calls	
  ReservaBons	
  with	
  the	
  
results	
  to	
  filter	
  out	
  unavailable	
  rooms	
  
	
  
What	
  is	
  a	
  Hack?	
  
What	
  is	
  a	
  Hack?	
  
•  Wikipedia	
  
–  Hack	
  is	
  a	
  soluBon	
  to	
  a	
  problem,	
  doing	
  a	
  task,	
  or	
  fixing	
  a	
  system	
  that	
  is	
  
inefficient,	
  inelegant,	
  or	
  even	
  unfathomable,	
  but	
  which	
  nevertheless	
  (more	
  or	
  
less)	
  works	
  
	
  
	
  
	
  
•  What	
  team	
  C	
  considers	
  a	
  hack	
  
–  The	
  idea	
  that	
  the	
  search	
  service	
  calls	
  the	
  inventory	
  service	
  with	
  the	
  found	
  
rooms	
  to	
  check	
  availability,	
  merges	
  the	
  response	
  and	
  filters	
  the	
  results	
  
The	
  Hotel	
  Search	
  Feature?	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
1.  Frontend	
  calls	
  ReservaBons	
  for	
  the	
  
search	
  
2.  ReservaBons	
  finds	
  all	
  available	
  rooms	
  
on	
  the	
  specified	
  dates	
  
3.  Then,	
  it	
  calls	
  Hotels	
  &	
  Room	
  Man.	
  to	
  
filter	
  and	
  sort	
  by	
  the	
  available	
  rooms	
  	
  
	
  
The	
  Architect	
  Role	
  
•  Did	
  we	
  define	
  the	
  right	
  services?	
  
–  Should	
  the	
  Hotel	
  &	
  Rooms	
  Management	
  and	
  the	
  ReservaBons	
  Service	
  be	
  
separate	
  services?	
  
•  Did	
  we	
  define	
  the	
  right	
  teams?	
  
–  Can	
  the	
  problem	
  between	
  the	
  two	
  services	
  be	
  caused	
  because	
  those	
  are	
  
owned	
  by	
  two	
  different	
  teams?	
  
•  IdenBfy	
  the	
  “hacks”	
  
–  Teams	
  tend	
  to	
  resist	
  doing	
  what	
  they	
  perceive	
  as	
  hacks	
  
–  Each	
  team	
  tries	
  to	
  force	
  the	
  hacks	
  out	
  of	
  their	
  domain,	
  	
  
turning	
  hacks	
  into	
  integra4on	
  problems	
  
–  Which	
  hacks	
  are	
  real	
  hacks	
  (we	
  don’t	
  want	
  those)	
  
–  Which	
  hack	
  are	
  redefini4ons	
  of	
  parts	
  (we	
  want	
  those)	
  
The	
  Architect	
  Role	
  
Assuming	
  we	
  have	
  the	
  right	
  teams	
  and	
  services	
  
•  Help	
  the	
  teams	
  select	
  a	
  soluBon	
  
–  Using	
  the	
  architecture	
  consideraBons	
  we	
  talked	
  about	
  
•  Redefine	
  the	
  services	
  
–  A	
  Service	
  is	
  defined	
  by	
  the	
  use-­‐cases	
  it	
  supports	
  
•  And	
  not	
  by	
  some	
  theoreBcal	
  idea	
  of	
  the	
  team	
  
–  If	
  a	
  Service	
  needs	
  to	
  support	
  search	
  by	
  doing	
  another	
  hackish	
  request	
  to	
  
another	
  service	
  –	
  it	
  is	
  not	
  a	
  hack,	
  but	
  rather	
  a	
  redefini4on	
  of	
  the	
  service	
  
•  Beware,	
  this	
  statement	
  does	
  not	
  mean	
  a	
  team	
  should	
  accept	
  any	
  hack!	
  	
  
	
  
The	
  Architect	
  Role	
  
The	
  Architect	
  role	
  is	
  to	
  connect	
  the	
  Micro	
  vs	
  Macro	
  
Macro	
  –	
  whole	
  product	
  /	
  company	
  /	
  soluBon	
  
	
  
•  Business	
  Requirements	
  
–  Are	
  we	
  building	
  the	
  right	
  product?	
  What	
  do	
  want	
  to	
  get	
  out	
  of	
  it?	
  
–  Evolve	
  with	
  the	
  business	
  
•  Product	
  DefiniBon	
  
–  Assess	
  features	
  starBng	
  with	
  user	
  stories	
  and	
  screen	
  mockups	
  
•  Real-­‐world	
  constraints	
  
–  All	
  the	
  consideraBons	
  we	
  talked	
  about	
  
The	
  Architect	
  role	
  is	
  to	
  help	
  teams	
  sort	
  the	
  right	
  path	
  between	
  requirement	
  
and	
  constraints	
  
The	
  Architect	
  Role	
  
The	
  Architect	
  role	
  is	
  to	
  connect	
  the	
  Micro	
  vs	
  Macro	
  
Micro	
  –	
  one	
  part	
  /	
  component	
  /	
  team	
  
•  A	
  Component	
  should	
  do	
  one	
  well	
  defined	
  thing	
  
–  Handles	
  one	
  specific	
  role	
  
–  Does	
  the	
  team	
  understand	
  the	
  role?	
  
•  Coherence	
  
–  Is	
  the	
  part	
  /	
  component	
  well	
  defined?	
  
•  The	
  role	
  is	
  defined	
  by	
  the	
  requirements	
  of	
  the	
  whole	
  
The	
  Architect	
  role	
  is	
  to	
  help	
  the	
  team	
  understand	
  their	
  part	
  in	
  the	
  whole	
  
The	
  Architect	
  Role	
  
Connect	
  the	
  Micro	
  and	
  the	
  Macro	
  
	
  
•  All	
  for	
  One	
  and	
  One	
  for	
  All	
  
–  Teams	
  and	
  Components	
  should	
  support	
  
the	
  business	
  
–  Align	
  the	
  teams	
  as	
  part	
  of	
  the	
  whole	
  
•  Challenge	
  the	
  teams	
  
–  Their	
  architecture	
  
–  Their	
  part	
  in	
  the	
  whole	
  architecture	
  
The	
  Architecture	
  Process	
  
Business	
  
Requirements	
  
Product	
  DefiniBon	
  
Compile	
  
End	
  2	
  End	
  	
  
Feature	
  Flows	
  
DecomposiBon	
  to	
  
teams	
  &	
  
components	
  
Redefine	
  
Component	
  
Boundaries	
  
Architect
facilitates the
process
Teams do the
architecture
•  RunBme	
  
•  Data	
  
•  Build	
  
Real-­‐World	
  
Constraints	
  
How	
  teams	
  &	
  components	
  
collaborate	
  to	
  build	
  the	
  end-­‐2-­‐end	
  product	
  
Ques4ons?	
  anyone?	
  
My	
  SoluBon	
  
Broaden	
  the	
  scope	
  and	
  allow	
  some	
  inconsistency	
  
•  Reflect	
  the	
  room	
  availability	
  in	
  the	
  search	
  service	
  
–  We	
  store	
  availability	
  twice	
  (in	
  reservaBons	
  and	
  search)	
  –	
  may	
  get	
  our	
  of	
  sync	
  
–  Have	
  the	
  reservaBon	
  service	
  update	
  the	
  search	
  on	
  room	
  orders	
  
•  Handle	
  the	
  inconsistency	
  
–  On	
  opening	
  a	
  room	
  page,	
  or	
  on	
  ordering	
  a	
  page,	
  we	
  need	
  to	
  recheck	
  the	
  room	
  
availability	
  
What	
  do	
  we	
  gain?	
  
•  Simpler	
  search	
  flow	
  
–  Search	
  is	
  used	
  more	
  compared	
  to	
  ordering	
  –	
  should	
  be	
  simpler	
  
•  More	
  robust	
  system	
  
–  Using	
  async	
  updates	
  decouples	
  failure	
  and	
  dependencies	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
My	
  SoluBon	
  -­‐	
  Order	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
A-Team
Team B
Team C
	
   	
  Order	
  
Are	
  you	
  
insane?	
  
1.  On	
  ReservaBon,	
  ReservaBons	
  noBfy	
  
Hotel	
  &	
  Room	
  Man.	
  
•  Async,	
  low	
  priority	
  
2.  Hotel	
  &	
  Room	
  Man.	
  stores	
  inventory	
  
per	
  room	
  
–  We	
  lose	
  consistency!!!	
  
Me?	
  
Inventory?	
  
My	
  SoluBon	
  -­‐	
  Search	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
Search	
  
1.  Search	
  is	
  done	
  with	
  the	
  Hotel	
  &	
  Room	
  
Management	
  system,	
  including	
  room	
  
availability	
  
–  Result	
  may	
  be	
  inconsistent	
  
	
  
	
  
My	
  SoluBon	
  –	
  Showing	
  Room	
  Page	
  
Frontend	
  
UI	
  
Backoffice	
  
UI	
  
Frontend	
  
Server	
  
Hotel	
  &	
  Room	
  
Management	
  
ElasBc	
  
Search	
  
ReservaBons	
  Checkout	
  
MySQL	
  
Payment	
  
Provider	
  
A-Team
Team B
Team C
1.  Because	
  we	
  have	
  a	
  potenBally	
  
inconsistent	
  state,	
  as	
  a	
  user	
  views	
  a	
  
room	
  page,	
  we	
  have	
  to	
  recheck	
  
availability	
  
	
  
	
  
Recheck	
  availability	
  
It’s	
  not	
  
our	
  job!	
  

Más contenido relacionado

La actualidad más candente

Challenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryChallenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryDBmaestro - Database DevOps
 
Database Deployment Pipeline - SQL In The City Workshop 2014
Database Deployment Pipeline - SQL In The City Workshop 2014Database Deployment Pipeline - SQL In The City Workshop 2014
Database Deployment Pipeline - SQL In The City Workshop 2014Red Gate Software
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryPerforce
 
DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? John Willis
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Automate Database Deployment - SQL In The City Workshop
Automate Database Deployment - SQL In The City WorkshopAutomate Database Deployment - SQL In The City Workshop
Automate Database Deployment - SQL In The City WorkshopRed Gate Software
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...John Willis
 
Immutable Service Delivery Shenzhen 2016
Immutable Service Delivery   Shenzhen 2016Immutable Service Delivery   Shenzhen 2016
Immutable Service Delivery Shenzhen 2016John Willis
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the thingsMat Mannion
 
Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalJohn Willis
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
What Is Slowing My Application Releases?
What Is Slowing My Application Releases?What Is Slowing My Application Releases?
What Is Slowing My Application Releases?Datical
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
Will ServerLess kill containers and Operations
Will ServerLess kill containers and OperationsWill ServerLess kill containers and Operations
Will ServerLess kill containers and OperationsStephane Woillez
 
The Architectural Thinking Behind Full Stack Serverless
The Architectural Thinking Behind Full Stack ServerlessThe Architectural Thinking Behind Full Stack Serverless
The Architectural Thinking Behind Full Stack ServerlessYazid Hamdi
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesTeamstudio
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLSteve Purkis
 

La actualidad más candente (20)

Challenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryChallenges and best practices of database continuous delivery
Challenges and best practices of database continuous delivery
 
Database Deployment Pipeline - SQL In The City Workshop 2014
Database Deployment Pipeline - SQL In The City Workshop 2014Database Deployment Pipeline - SQL In The City Workshop 2014
Database Deployment Pipeline - SQL In The City Workshop 2014
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery
 
DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How? DOES16 London - Better Faster Cheaper .. How?
DOES16 London - Better Faster Cheaper .. How?
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Automate Database Deployment - SQL In The City Workshop
Automate Database Deployment - SQL In The City WorkshopAutomate Database Deployment - SQL In The City Workshop
Automate Database Deployment - SQL In The City Workshop
 
Microservices in Azure
Microservices in AzureMicroservices in Azure
Microservices in Azure
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
 
Immutable Service Delivery Shenzhen 2016
Immutable Service Delivery   Shenzhen 2016Immutable Service Delivery   Shenzhen 2016
Immutable Service Delivery Shenzhen 2016
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational Capital
 
DevOps for CTOs
DevOps for CTOsDevOps for CTOs
DevOps for CTOs
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
What Is Slowing My Application Releases?
What Is Slowing My Application Releases?What Is Slowing My Application Releases?
What Is Slowing My Application Releases?
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
Will ServerLess kill containers and Operations
Will ServerLess kill containers and OperationsWill ServerLess kill containers and Operations
Will ServerLess kill containers and Operations
 
The Architectural Thinking Behind Full Stack Serverless
The Architectural Thinking Behind Full Stack ServerlessThe Architectural Thinking Behind Full Stack Serverless
The Architectural Thinking Behind Full Stack Serverless
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQL
 

Similar a Software Architecture

Performance Oriented Design
Performance Oriented DesignPerformance Oriented Design
Performance Oriented DesignRodrigo Campos
 
Real-world software design practices when developing ASP.NET web systems by B...
Real-world software design practices when developing ASP.NET web systems by B...Real-world software design practices when developing ASP.NET web systems by B...
Real-world software design practices when developing ASP.NET web systems by B...Bojan Veljanovski
 
MongoDB: What, why, when
MongoDB: What, why, whenMongoDB: What, why, when
MongoDB: What, why, whenEugenio Minardi
 
ShaREing Is Caring
ShaREing Is CaringShaREing Is Caring
ShaREing Is Caringsporst
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudyJohn Adams
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitterRoger Xia
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...smallerror
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...xlight
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cachecornelia davis
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDBFoundationDB
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applicationsRam G Athreya
 
Hard Coding as a design approach
Hard Coding as a design approachHard Coding as a design approach
Hard Coding as a design approachOren Eini
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotchaphegaro
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 

Similar a Software Architecture (20)

Windows Azure introduction
Windows Azure introductionWindows Azure introduction
Windows Azure introduction
 
Performance Oriented Design
Performance Oriented DesignPerformance Oriented Design
Performance Oriented Design
 
Real-world software design practices when developing ASP.NET web systems by B...
Real-world software design practices when developing ASP.NET web systems by B...Real-world software design practices when developing ASP.NET web systems by B...
Real-world software design practices when developing ASP.NET web systems by B...
 
MongoDB: What, why, when
MongoDB: What, why, whenMongoDB: What, why, when
MongoDB: What, why, when
 
ShaREing Is Caring
ShaREing Is CaringShaREing Is Caring
ShaREing Is Caring
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudy
 
IWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them BothIWMW 2002: Portals and CMS:" Why You Need Them Both
IWMW 2002: Portals and CMS:" Why You Need Them Both
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitter
 
Fixing_Twitter
Fixing_TwitterFixing_Twitter
Fixing_Twitter
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDB
 
Feature driven agile oriented web applications
Feature driven agile oriented web applicationsFeature driven agile oriented web applications
Feature driven agile oriented web applications
 
Hard Coding as a design approach
Hard Coding as a design approachHard Coding as a design approach
Hard Coding as a design approach
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Ci selenium
Ci seleniumCi selenium
Ci selenium
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotcha
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 

Más de Yoav Avrahami

Wix Code - Todo App - Yale Hachathon
Wix Code - Todo App - Yale HachathonWix Code - Todo App - Yale Hachathon
Wix Code - Todo App - Yale HachathonYoav Avrahami
 
Future of Serverless
Future of ServerlessFuture of Serverless
Future of ServerlessYoav Avrahami
 
Scaling wix to over 50 m users
Scaling wix to over 50 m usersScaling wix to over 50 m users
Scaling wix to over 50 m usersYoav Avrahami
 
Wix 10M Users Event - Prospero Media Storage
Wix 10M Users Event - Prospero Media StorageWix 10M Users Event - Prospero Media Storage
Wix 10M Users Event - Prospero Media StorageYoav Avrahami
 
DOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersDOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersYoav Avrahami
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and BytecodeYoav Avrahami
 

Más de Yoav Avrahami (7)

Wix Code - Todo App - Yale Hachathon
Wix Code - Todo App - Yale HachathonWix Code - Todo App - Yale Hachathon
Wix Code - Todo App - Yale Hachathon
 
Future of Serverless
Future of ServerlessFuture of Serverless
Future of Serverless
 
Jvm memory model
Jvm memory modelJvm memory model
Jvm memory model
 
Scaling wix to over 50 m users
Scaling wix to over 50 m usersScaling wix to over 50 m users
Scaling wix to over 50 m users
 
Wix 10M Users Event - Prospero Media Storage
Wix 10M Users Event - Prospero Media StorageWix 10M Users Event - Prospero Media Storage
Wix 10M Users Event - Prospero Media Storage
 
DOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersDOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M users
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and Bytecode
 

Último

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Último (20)

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Software Architecture

  • 1.     So#ware  Architecture   Reversim  Summit  2014  
  • 2. Why  do  we  need  architecture?     What  it  is  good  for?     Is  there  a  role  for  an  Architect?  
  • 3. Architecture  is  both  the  process  and  the   product  of  planning,  designing,  and  construcBng   buildings  and  other  physical  structures.    
  • 4. Architecture  is  both  the  process  and  the   product  of  planning,  designing,  and  construcBng   so#ware  products  and  other  so#ware  systems.    
  • 5. Is  this  soDware  architecture?  
  • 6. •  It  looks  like  a  blueprint     Is  this  soDware  architecture?  
  • 7. However   •  The  main  funcBon  of  a  building  is  sta4c   •  The  main  funcBon  of  soDware  is  dynamic     –  Good  soDware  react  to  user  input  and  different  external  events   –  SoDware  evolves  with  Bme     A  Blueprint  is  not  a  good  representa4on  of  so#ware  architecture!   Is  this  soDware  architecture?  
  • 8. What  is  SoDware  Architecture?   • Code  dependencies   • TesBng  dependencies   • Deployment   dependencies   • VPNs   • VLANs   • Routers   • Switches   • CP  vs  AP   • Data  layout   • OpBmizaBon   • Process  interacBons   • SLA   • Data  centers   • Failure  recovery   RunBme   Data   Build  Network  
  • 9. RunBme  Architecture   It’s  about  the  runBme  construcBon  of  soDware   •  A  soDware  system  is  built  of  OS  processes   –  Deployed  on  one  or  more  hosts   •  The  Processes  collabora4on  is  the  so#ware  system   –  InteracBons  via  RPC,  web  services,  MQs,  BUS,  shared  memory,  files,  etc.   •  Process  interacBons  with  data  storage   –  Databases,  NoSQL  engines,  disks,  data  store  APIs   •  Reverse  Proxies,  Service  Bus   –  Non-­‐funcBonal  facilitators  of  interacBons  between  processes  
  • 10. ConsideraBons  for     RunBme  Architecture   •  Resource  Management  and  Capacity  Planning   –  CPU,  disk  &  network  (IO),  resource  pools  (threads,  DB  connecBons)   •  Service  Level  Requirements  /  Agreements   –  Availability  requirements,  DRP,  performance,  etc.   •  OrganizaBonal  Structure   •  When  shit  hits  the  fans   –  Self  healing  systems  vs  terminal  failures   –  Containment  of  failures   •  “Browser  land”   –  Security  &  cross  domain  constraints   •  CAP  Theorem   •  Note:  cache  is  not  part  of  an  architecture  –  it  is  an  opBmizaBon  
  • 11. Data  Architecture   It’s  about  your  data   •  What  is  your  data?   •  What  is  the  structure  of  the  data?   –  RelaBonal,  columnar,  doc,  key/value,  events,  search  index,  queues,  graph,   logs,  unstructured,  pictures,  CRDTs  …   Create   Cart   Add  item   Add  item   Remove   item   checkout   key   value   key   value   key   value   key   value   key   value   Column  1   2   Noddle   1   Pig   Spider   Cookie   A   3   Killer   B   4   Dipface   C   5   Swamp   D   6   Donkey   E   7   Wooly   F   8   Weasel   H   G   10   9   J   I   Column  2   Column  3  
  • 12. Data  Architecture   How  do  you  use  your  data?   •  Read  paoern?   –  RelaBonal,  object,  CQRS  (Query  SegregaBon),  Bme  series,     event  sourcing,  map  reduce,  full  table  scans   –  OperaBonal,  offline  and  realBme  –  the  three  scopes  of  data  analysis   •  Write  paoern?   –  OperaBonal,  ETLs,  data  imports   •  Search  paoern?   –  By  field  filters,  full  text  search,  links  (between  items),  relaBons   •  Data  Mutability   –  Is  your  data  mutable  (e.g.  update  &  delete  operaBons)?  
  • 13. ConsideraBons  for   Data  Architecture   •  CP  vs  AP  –  Consistency  vs  Availability   –  CAP  theorem  mandates  you  cannot  get  both  (unless  you  allow  split  brain…)   –  CRDTs  -­‐  CommutaBve  (or  Conflict  free)  Replicated  Data  Types   •  Eventual  Consistency   –  Can  you  model  your  system  to  cope  with  a  certain  level  of  inconsistency?   •  Performance  vs  Size  vs  Features   –  OpBmize  for  fast  reads  /  fast  writes  /  huge  size  /  complex  queries  &  MR   •  DRP   –  What  happens  if  your  engine  dies?   –  What  happens  if  your  data  get  poisoned?  
  • 14. Build  Architecture   It’s  about  how  you  Build  your  code   Build  ConsideraBons   •  Dependencies   –  Code,  Jar,  Build,  TesBng  &  Deployment  dependencies   •  Build  pipeline   –  Building  dependencies  in  order   –  Building  against  the  right  dependencies   •  Minimize  building  and  tesBng  Bme   •  Version  management   –  Major.minor.build.patch.fix.test….   –  Do  we  need  versions  at  all?    
  • 15. Build  Architecture   Dependencies   •  The  root  of  all  evil  –  reuse   –  Dependencies  are  introduced  because  component  A  uses  component  B   –  Without  reuse,  there  are  no  dependencies   •  Diamond  problem   –  Manual  dependency progression  (Maven,  Ivy)   –  AutomaBc  dependency  progression  (conBnuous  delivery)   –  “Pick  your  poison”  dependency  progression  (NPM)   •  Dependencies  complexity   –  Complexity  is  an  exponenBal  funcBon     of  the  number  of  components   D   C  B   A  1.1   A  1.0  
  • 16. Build  Architecture   It’s  about  how  you  Deploy  your  code   •  Deployment   –  Decoupling  deployment  from  feature  release   –  Automated  deployment   –  Zero-­‐downBme  deployment   •  Rolling  updates,  parallel  clusters  (Netlix)   –  MulBple-­‐environment  support   •  Development,  Debugging,  TesBng,  Staging,  ProducBon   •  Post-­‐Deployment   –  A/B  tests   –  Feature  Toggles   –  Immune  system   •  Startup  tests,  post  deployment  monitoring   –  Automated  rollback  
  • 17. What  about  Code  Level  Architecture?   I  do  not  believe  there  is  “code-­‐level  architecture”     •  Coding  is  Engineering   –  WriBng  modular  code,  maintainable  code,  testable  code   –  Design  paoerns  are  a  theoreBcal  tool   •  Architecture  is  about  real-­‐worlds  constraints   –  In  an  ideal  world  –  infinite  space,  infinite  performance,  infinite  consistency   magic  database  –  do  we  need  architecture?   •  Coding  by  itself  is  in  a  mathemaBcal  exercise,  in  a  theoreBcal  domain.   –  Only  when  introducing  “real-­‐world”  constraints  do  we  need  architecture  
  • 18. The  Architect  Role   Architect Architecture !=
  • 19. Anyone  can  do  architecture    
  • 20. Everyone  should  do  architecture    
  • 21. So  what  is  the  role  of  the     Architect?  
  • 22. Lets  consider  a  product   A  Hotel  Management  system   Frontend  UI   Hotel  &  Room   Management   ReservaBons  Checkout   Backoffice  UI   Frontend   Server   MySQL   ElasBc   Search   Payment   Provider  
  • 23. The  teams   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C
  • 24. And  a  Feature   Search  for  available  rooms   •  Query  the  Hotel  &  Room   Management  service  for  the   rooms  that  fit  the  search   –  By  hotel  star  raBng,  review   score,  etc.   •  Query  the  ReservaBon  service   to  find  available  rooms   –  By  availability  of  rooms,  based   on  current  reservaBons  
  • 25. The  Hotel  Search  Feature?   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C Are   you   real???   1.  Frontend  calls  Hotels  &  Rooms  Man.   for  the  search,  gets  back  a  few  pages   of  rooms.     2.  Then,  it  calls  ReservaBons  with  the   results  to  filter  out  unavailable  rooms    
  • 26. The  Hotel  Search  Feature?   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C No   Hacks   Here!   1.  Frontend  calls  Hotels  &  Rooms  Man.   for  the  search   2.  Hotels  &  Rooms  Man.  searches  for  the   right  rooms   3.  Then,  it  calls  ReservaBons  with  the   results  to  filter  out  unavailable  rooms    
  • 27. What  is  a  Hack?  
  • 28. What  is  a  Hack?   •  Wikipedia   –  Hack  is  a  soluBon  to  a  problem,  doing  a  task,  or  fixing  a  system  that  is   inefficient,  inelegant,  or  even  unfathomable,  but  which  nevertheless  (more  or   less)  works         •  What  team  C  considers  a  hack   –  The  idea  that  the  search  service  calls  the  inventory  service  with  the  found   rooms  to  check  availability,  merges  the  response  and  filters  the  results  
  • 29. The  Hotel  Search  Feature?   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C 1.  Frontend  calls  ReservaBons  for  the   search   2.  ReservaBons  finds  all  available  rooms   on  the  specified  dates   3.  Then,  it  calls  Hotels  &  Room  Man.  to   filter  and  sort  by  the  available  rooms      
  • 30. The  Architect  Role   •  Did  we  define  the  right  services?   –  Should  the  Hotel  &  Rooms  Management  and  the  ReservaBons  Service  be   separate  services?   •  Did  we  define  the  right  teams?   –  Can  the  problem  between  the  two  services  be  caused  because  those  are   owned  by  two  different  teams?   •  IdenBfy  the  “hacks”   –  Teams  tend  to  resist  doing  what  they  perceive  as  hacks   –  Each  team  tries  to  force  the  hacks  out  of  their  domain,     turning  hacks  into  integra4on  problems   –  Which  hacks  are  real  hacks  (we  don’t  want  those)   –  Which  hack  are  redefini4ons  of  parts  (we  want  those)  
  • 31. The  Architect  Role   Assuming  we  have  the  right  teams  and  services   •  Help  the  teams  select  a  soluBon   –  Using  the  architecture  consideraBons  we  talked  about   •  Redefine  the  services   –  A  Service  is  defined  by  the  use-­‐cases  it  supports   •  And  not  by  some  theoreBcal  idea  of  the  team   –  If  a  Service  needs  to  support  search  by  doing  another  hackish  request  to   another  service  –  it  is  not  a  hack,  but  rather  a  redefini4on  of  the  service   •  Beware,  this  statement  does  not  mean  a  team  should  accept  any  hack!      
  • 32. The  Architect  Role   The  Architect  role  is  to  connect  the  Micro  vs  Macro   Macro  –  whole  product  /  company  /  soluBon     •  Business  Requirements   –  Are  we  building  the  right  product?  What  do  want  to  get  out  of  it?   –  Evolve  with  the  business   •  Product  DefiniBon   –  Assess  features  starBng  with  user  stories  and  screen  mockups   •  Real-­‐world  constraints   –  All  the  consideraBons  we  talked  about   The  Architect  role  is  to  help  teams  sort  the  right  path  between  requirement   and  constraints  
  • 33. The  Architect  Role   The  Architect  role  is  to  connect  the  Micro  vs  Macro   Micro  –  one  part  /  component  /  team   •  A  Component  should  do  one  well  defined  thing   –  Handles  one  specific  role   –  Does  the  team  understand  the  role?   •  Coherence   –  Is  the  part  /  component  well  defined?   •  The  role  is  defined  by  the  requirements  of  the  whole   The  Architect  role  is  to  help  the  team  understand  their  part  in  the  whole  
  • 34. The  Architect  Role   Connect  the  Micro  and  the  Macro     •  All  for  One  and  One  for  All   –  Teams  and  Components  should  support   the  business   –  Align  the  teams  as  part  of  the  whole   •  Challenge  the  teams   –  Their  architecture   –  Their  part  in  the  whole  architecture  
  • 35. The  Architecture  Process   Business   Requirements   Product  DefiniBon   Compile   End  2  End     Feature  Flows   DecomposiBon  to   teams  &   components   Redefine   Component   Boundaries   Architect facilitates the process Teams do the architecture •  RunBme   •  Data   •  Build   Real-­‐World   Constraints   How  teams  &  components   collaborate  to  build  the  end-­‐2-­‐end  product  
  • 37. My  SoluBon   Broaden  the  scope  and  allow  some  inconsistency   •  Reflect  the  room  availability  in  the  search  service   –  We  store  availability  twice  (in  reservaBons  and  search)  –  may  get  our  of  sync   –  Have  the  reservaBon  service  update  the  search  on  room  orders   •  Handle  the  inconsistency   –  On  opening  a  room  page,  or  on  ordering  a  page,  we  need  to  recheck  the  room   availability   What  do  we  gain?   •  Simpler  search  flow   –  Search  is  used  more  compared  to  ordering  –  should  be  simpler   •  More  robust  system   –  Using  async  updates  decouples  failure  and  dependencies  
  • 38. ReservaBons  Checkout   MySQL   Payment   Provider   My  SoluBon  -­‐  Order   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   A-Team Team B Team C    Order   Are  you   insane?   1.  On  ReservaBon,  ReservaBons  noBfy   Hotel  &  Room  Man.   •  Async,  low  priority   2.  Hotel  &  Room  Man.  stores  inventory   per  room   –  We  lose  consistency!!!   Me?   Inventory?  
  • 39. My  SoluBon  -­‐  Search   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C Search   1.  Search  is  done  with  the  Hotel  &  Room   Management  system,  including  room   availability   –  Result  may  be  inconsistent      
  • 40. My  SoluBon  –  Showing  Room  Page   Frontend   UI   Backoffice   UI   Frontend   Server   Hotel  &  Room   Management   ElasBc   Search   ReservaBons  Checkout   MySQL   Payment   Provider   A-Team Team B Team C 1.  Because  we  have  a  potenBally   inconsistent  state,  as  a  user  views  a   room  page,  we  have  to  recheck   availability       Recheck  availability   It’s  not   our  job!