*+,)-&.#&,,(#&.)/%"0)%1)2'#34#&.)
                /3%'4)566")
               7#$%&)8'&(%)



!"#$%&$'&(%)
5)0(',)"0%(9:)




!"#$%&$'&(%)
7#$63,)-*B)

                            #$;.,"=>#6)   for each csv file
           ?"@)A3,)                       {
                                            UnzipImages()
                                            for each readLine()
                      #$6%(0)               {
                                              ParseLine()
                                              Validate()
                                              ProcessImages()
                  4;0;<;",)                   Transform()
                                              SaveToDatabase()
                                            }
                                          }



!"#$%&$'&(%)
C%D)$;E,)#0:)

               7?;3;<3,)
                F#"0(#<'0,4)
                  B%%",39)/%'63,4)
                    5@;#3;<3,)
                      G,"#3#,&0)
!"#$%&$'&(%)
H,33)9%');"E,4)1%()#0:)




!"#$%&$'&(%)
F#4)9%')63;&)1%()0+,),J0(;),&.#&,,(#&.)?%"0K)



                                   /3;""#?)F,@)
                                   B%%",)/%'63#&.)
                                   5"9&?+(%&%'")
                                   F#"0(#<'0,4)
                                   I,("#"0,&?,)
                                   5@;#3;<#3#09)




!"#$%&$'&(%)
L&);)6(%.(,""#@,)4,@)0,;$:)   /3;""#?)F,@)
                               /3%'4)*;J)




                               /3;""#?)F,@)
 L&);)0(;4#M%&;3)4,@)0,;$:)
                               /3%'4)*;J)



           polite term
                      !
!"#$%&$'&(%)
5&4),@,(9%&,),3",K)


                  I8)



               F,@L6")
                         /3;""#?)
                         /3%'4)*;J)
                  N5)



                  F,@)



!"#$%&$'&(%)
*+,)I(%$#",)%1)?3%'4"O)(;#&<%D");&4)'&#?%(&")

                 )
           ,()3%D
        7'6 P)
           ?%"0




            Q&"0;&0)
          7?;3;<#3#                      G;6#4) )
                                               &0P
                    09P)             -& ;<3,$,

!"#$%&$'&(%)
*+,)(,;3#09)%1)?3%'4"O)3#.+0&#&.);&4)4(;.%&")

                         7?;3;<#3#09);&4);@;#3;<#3#09)#")&%0)1(,,)


                         /%"0)$%4,3");(,)?%$63,J)


                         I(%R,?0)$;&;.,(");(,)?3',3,"")


                         F,@");(,)&%0)#&0,(,"0,4)#&)0+,)?3%'4)


                         *+,(,);(,);)<'&?+)%1)0+#&.")0%)3,;(&)

!"#$%&$'&(%)
S%D)4%)D,)"3;9)0+,)4(;.%&:)




    ;&4).,0)<;?E)0%)(;#&<%D");&4)'&#?%(&"K)
!"#$%&$'&(%)
1
               *+,(,);(,)?%"0)";@#&.")



                      S%D)$;&9)4,@)4;9")?;&)
                            9%')<'9)D#0+)0+,)
                           ";@#&.")%1);)"#&.3,)
                              L(;?3,)3#?,&",K)


!"#$%&$'&(%)
2
               *+,)?3%'4)#")&%0)R'"0)
               ;<%'0)Q*)?%"0)";@#&.")



                        2'"#&,"");.#3#09);&4)
                        <'"#&,"")#&&%@;M%&)
                                 +;@,)@;3',)

!"#$%&$'&(%)
3
               C%0);33);66")"+%'34)<,)
               ;(?+#0,?0,4)1%()0+,)
               ?3%'4)
                      L&39);66")T%()6;(0")%1)
                       ;66"U)0+;0)&,,4)0%)<,)
                          ;.#3,O)"?;3;<3,);&4)
                   ;@;#3;<3,=)*+,)(,"0)?;&)<,)
                    %&)6(,$#",)%()#&);)?%V3%)

!"#$%&$'&(%)
4
               H,)"+%'34)TD#33)
               ,@,&0';339U)4,@,3%6);33)
               ;66")#&);)?3%'49)D;9)
                                    /3%'4)6;W,(&"))
                     T"?;3;<#3#09O)3%%",)?%'63#&.U)
                               ;(,).%%4)6;W,(&"=)
                       )5&9%&,)(,$,$<,()7L5K)



!"#$%&$'&(%)
F%&,)T6+,DPU)


                           ?3%'4?%$$,&0"=&,0)
                       $;#3!"#$%&$'&(%=?%$)

!"#$%&$'&(%)

Engineering Cost of Building Cloud Apps - Simon Munro

  • 1.
    *+,)-&.#&,,(#&.)/%"0)%1)2'#34#&.) /3%'4)566") 7#$%&)8'&(%) !"#$%&$'&(%)
  • 2.
  • 3.
    7#$63,)-*B) #$;.,"=>#6) for each csv file ?"@)A3,) { UnzipImages() for each readLine() #$6%(0) { ParseLine() Validate() ProcessImages() 4;0;<;",) Transform() SaveToDatabase() } } !"#$%&$'&(%)
  • 4.
    C%D)$;E,)#0:) 7?;3;<3,) F#"0(#<'0,4) B%%",39)/%'63,4) 5@;#3;<3,) G,"#3#,&0) !"#$%&$'&(%)
  • 5.
  • 6.
    F#4)9%')63;&)1%()0+,),J0(;),&.#&,,(#&.)?%"0K) /3;""#?)F,@) B%%",)/%'63#&.) 5"9&?+(%&%'") F#"0(#<'0,4) I,("#"0,&?,) 5@;#3;<#3#09) !"#$%&$'&(%)
  • 7.
    L&);)6(%.(,""#@,)4,@)0,;$:) /3;""#?)F,@) /3%'4)*;J) /3;""#?)F,@) L&);)0(;4#M%&;3)4,@)0,;$:) /3%'4)*;J) polite term ! !"#$%&$'&(%)
  • 8.
    5&4),@,(9%&,),3",K) I8) F,@L6") /3;""#?) /3%'4)*;J) N5) F,@) !"#$%&$'&(%)
  • 9.
    *+,)I(%$#",)%1)?3%'4"O)(;#&<%D");&4)'&#?%(&") ) ,()3%D 7'6 P) ?%"0 Q&"0;&0) 7?;3;<#3# G;6#4) ) &0P 09P) -& ;<3,$, !"#$%&$'&(%)
  • 10.
    *+,)(,;3#09)%1)?3%'4"O)3#.+0&#&.);&4)4(;.%&") 7?;3;<#3#09);&4);@;#3;<#3#09)#")&%0)1(,,) /%"0)$%4,3");(,)?%$63,J) I(%R,?0)$;&;.,(");(,)?3',3,"") F,@");(,)&%0)#&0,(,"0,4)#&)0+,)?3%'4) *+,(,);(,);)<'&?+)%1)0+#&.")0%)3,;(&) !"#$%&$'&(%)
  • 11.
    S%D)4%)D,)"3;9)0+,)4(;.%&:) ;&4).,0)<;?E)0%)(;#&<%D");&4)'&#?%(&"K) !"#$%&$'&(%)
  • 12.
    1 *+,(,);(,)?%"0)";@#&.") S%D)$;&9)4,@)4;9")?;&) 9%')<'9)D#0+)0+,) ";@#&.")%1);)"#&.3,) L(;?3,)3#?,&",K) !"#$%&$'&(%)
  • 13.
    2 *+,)?3%'4)#")&%0)R'"0) ;<%'0)Q*)?%"0)";@#&.") 2'"#&,"");.#3#09);&4) <'"#&,"")#&&%@;M%&) +;@,)@;3',) !"#$%&$'&(%)
  • 14.
    3 C%0);33);66")"+%'34)<,) ;(?+#0,?0,4)1%()0+,) ?3%'4) L&39);66")T%()6;(0")%1) ;66"U)0+;0)&,,4)0%)<,) ;.#3,O)"?;3;<3,);&4) ;@;#3;<3,=)*+,)(,"0)?;&)<,) %&)6(,$#",)%()#&);)?%V3%) !"#$%&$'&(%)
  • 15.
    4 H,)"+%'34)TD#33) ,@,&0';339U)4,@,3%6);33) ;66")#&);)?3%'49)D;9) /3%'4)6;W,(&")) T"?;3;<#3#09O)3%%",)?%'63#&.U) ;(,).%%4)6;W,(&"=) )5&9%&,)(,$,$<,()7L5K) !"#$%&$'&(%)
  • 16.
    F%&,)T6+,DPU) ?3%'4?%$$,&0"=&,0) $;#3!"#$%&$'&(%=?%$) !"#$%&$'&(%)