̸̸AWS LambdaºÍserverless architecture
ÓÉÓÚ»ùÓÚlambdaµÄÖî¶àÓ¦Óó¡¾°»¹´¦ÔÚ¸Õ¸ÕÆð²½µÄ½×¶Î£¬ËùÒԺܶàorchestrationµÄÊÂÇ黹ÐèÒª×Ô¼º×ö£¬ÏàÐŵÈlambdaµÄʹÓÃÈÕÇ÷³ÉÊìʱ£¬¾ÍÏñdockerÉú̬ȦһÑù£¬»á²úÉúÖÚ¶àµÄorchestrationµÄ¹¤¾ß£¬½â¾ö»òÕß»º½âϵͳʧ¿ØµÄÎÊÌâ¡£

×î½ü°ëÄêÀ´£¬Ëæ×ÅAWSµÄ¸÷Ïß·þÎñ¶¼¿ªÊ¼Ö§³Ölambda£¬serverless
architecture±ã½¥½¥³ÉΪһ¸ö»ðÈȵϰÌâ¡£lambdaÊÇamzonÍÆ³öµÄÒ»¸öÊܿصÄÔËÐл·¾³£¬Æð³õ½ö½öÖ§³Önodejs(Ö®ºóÌí¼ÓÁËjava/pythonµÄÖ§³Ö)¡£Äã¿ÉÒÔдһ¶ÎnodejsµÄ´úÂ룬ΪÆä´´½¨Ò»¸ölambda×ÊÔ´£¬ÕâÑù£¬µ±Ö¸¶¨µÄʼþÀ´ÁÙµÄʱºò£¬awsµÄÔËÐÐʱ»á´´½¨ÄãµÄÔËÐл·¾³£¬Ö´ÐÐÄãµÄ´úÂ룬ִÐÐÍê±Ï(»òÕßtimeout)ºó£¬»ØÊÕÒ»ÇÐ×ÊÔ´¡£Õâ¿´ÆðÀ´²¢²»Ï¡º±£¬Õû¸öÔËÐл·¾³»¹Êܵ½ºÜ¶àÏÞÖÆ£¬±ÈÈçĿǰawsΪlambdaÌṩÁËÄÄЩʼþÖ§³Ö£¬Äã¾ÍÄÜÓÃÄÄЩʼþ£¬Í¬Ê±ÄãµÄ´úÂëÎÞ·¨³¬¹ýtimeoutÖ¸¶¨µÄʱ¼äÖ´ÐÐ(Ŀǰ×î´óÊÇ5min)£¬ÄÚ´æÊ¹ÓÃ×î¶àÒ²¾ÍÊÇ1.5G¡£ÄÇôÎÊÌâÀ´ÁË£¬ÕâÑùÒ»¸ö¿´ÆðÀ´ËƺõÓÐÄÇôµã¼¦ÀߵķþÎñ£¬ÎªÊ²Ã´»¹Êܵ½Èç´ËÈÈÅõ?ÔÒò¾ÍÔÚÓÚÎޱȵÍÁ®µÄ¼Û¸ñ(ÿ°ÙÍò´ÎÇëÇó0.2ÃÀÔª
+ ÿ°ÙÍòGBÃëÔËÐÐʱ¼ä16.67ÃÀÔª)£¬ÎãÐë²ÙÐÄinfrastructure£¬ÒÔ¼°½üºõÎÞÏÞÀ©ÈݵÄÄÜÁ¦¡£

ʹÓÃlambda´¦Àíʼþ´¥·¢
ÔÚ·þÎñÆ÷¶Ë£¬ÎÒÃÇËùдµÄ´ó²¿·Ö´úÂëÊÇʼþ´¥·¢µÄ£º
´¦ÀíÓû§¶Ôij¸öURIµÄÇëÇó(´ò¿ªÄ³¸öÒ³Ãæ£¬µã»÷ij¸ö°´Å¥)
Óû§×¢²áʱ·¢ÓʼþÑéÖ¤ÓÊÏ䵨ַ
Óû§ÉÏ´«Í¼Æ¬Ê±½«Í¼Æ¬Çиî³ÉºÏÊʵijߴç
µ±log³ÖÐø³öÏÖÈô¸É´Î500 internal errorʱ½«´íÎóÈÕÖ¾¾ÛºÏ·¢¸øÖ¸¶¨µÄÓÊÏä
°ëÒ¹12µã£¬·ÖÎöÒ»ÌìÀ´ÊÕ¼¯µÄÊý¾Ý(±ÈÈçclickstream)²¢Éú³É±¨¸æ
µ±Êý¾Ý¿âµÄij¸ö×Ö¶ÎÐÞ¸Äʱ×öЩʺó´¦Àí
ͬʱ£¬ÔÚ´¦ÀíÒ»¸öʼþµÄ¹ý³ÌÖУ¬ÍùÍù»á´¥·¢ÐµÄʼþ¡£»ù±¾ÉÏÎÒÃÇ×öÒ»¸öϵͳ£¬Èç¹ûÄÜÀåÇåÄÚ²¿µÄÊý¾ÝÁ÷ºÍʼþÁ÷£¬ÒÔ¼°¶ÔÓ¦µÄÐÐΪ£¬ÄÇôÕâ¸öϵͳµÄ¼Ü¹¹Ò²¾Í°Ë¾Å²»ÀëÊ®ÁË¡£Èç¹ûÒªÈÃÎÒÃÇ×Ô¼ºÀ´Éè¼ÆÒ»¸ö·Ö²¼Ê½µÄʼþ´¦Àíϵͳ£¬Ò»°ã»áʹÓÃMessage
Qeueue£¬±ÈÈçRabbitMQ»òÕßKafka×÷Ϊʼþ¼¤·¢ºÍʼþ´¦ÀíµÄÖÐÊà¡£ÕâÍùÍùÒâζ×ÅÔÚÏÖÓеÄinfrastructureÖ®ÍâÖÁÉÙÌíÖÃʼþ´¦ÀíµÄbroker(MQ)ºÍworker(¶ÁÈ¡²¢´¦ÀíʼþµÄÀý³Ì)¡£Èç¹ûÄãÓÃawsµÄ·þÎñ£¬SQS(»òÕßSNS+SQS)¿ÉÒÔ×÷Ϊbroker£¬È»ºóÅäÖÃÈô¸Ę́EC2×öworker¡£Èç¹ûij¸öʼþÁ÷µÄ²úÉúËÙ¶È´ó´ó³¬¹ýÕâ¸öʼþÁ÷µÄ´¦ÀíËÙ¶È£¬ÄÇôÎÒÃÇ»¹µÃ¿¼ÂÇʹÓÃauto
scaling groupÔÚqueueµÄ³¤¶È³¬¹ýÒ»¶¨ãÐÖµ»òÕßµÍÓÚÒ»¶¨ãÐֵʱscale up / down¡£Õâ²»½öÂé·³£¬Ò²ÎÞ·¨Âú×ãijЩҪÇóÒ»¶¨·ÃÎÊÑÓ³Ù±£Õϵij¡¾°£¬ÒòΪ£¬ÐµÄEC2µÄÆô¶¯Ö±ÖÁÔÚauto
scaling groupÀï±»±ê¼ÇΪ¿ÉÓÃÊÇÊýÊ®Ãë¼¶µÄ¶¯×÷¡£
lambda¾ÍºÜºÃµØÃÖ²¹ÁËÕâ¸öÎÊÌâ¡£lambdaµÄÖ´ÐÐÊÇÖÃÓÚcontainerÖ®Öеģ¬ËùÒÔÆô¶¯ËÙ¶È¿ÉÒÔµÍÖÁ¼¸Ê®µ½Êý°ÙºÁÃëÖ®¼ä£¬¶øÇÒËü¿ÉÒÔ±»ÒÑÖªµÄʼþ»òÕßij¶Î´úÂë´¥·¢£¬ËùÒÔ»ù±¾ÉÏÄã¿ÉÒÔÔÚ²»Í¬µÄÉÏÏÂÎÄÖÐÖ±½Óµ÷ÓûòÕß´¥·¢lambdaº¯Êý£¬µ±È»Ò²¿ÉÒÔʹÓÃSNS(kenisis)+lambdaÈ¡´úÔ±¾ÓÃMQ+workerÍê³ÉµÄ¹¤×÷¡£
ÎÒÃÇ¿´ÉÏÊöʼþµÄ´¦Àí£º
´¦ÀíÓû§¶Ôij¸öURIµÄÇëÇó(´ò¿ªÄ³¸öÒ³Ãæ£¬µã»÷ij¸ö°´Å¥)£ºÊ¹ÓÃAPI gateway + lambda
Óû§×¢²áʱ·¢ÓʼþÑéÖ¤ÓÊÏ䵨ַ£º
¿ÉÒÔÔÚÓû§×¢²áµÄÁ÷³ÌÀïÖ±½Óµ÷ÓÃlambdaº¯Êý·¢ËÍÓʼþ
Èç¹ûʹÓÃdynamodb£¬¿ÉÒÔÅäÖÃlambdaº¯ÊýʹÆäʹÓÃdynamodb streamÔÚÓû§Êý¾ÝдÈëÊý¾Ýʱµ÷ÓÃlambda
Óû§ÉÏ´«Í¼Æ¬Ê±½«Í¼Æ¬Çиî³ÉºÏÊʵijߴç
¿ÉÒÔÅäÖÃlambdaº¯Êý±»S3µÄObject Create Event´¥·¢£¬ÔÚlambdaº¯ÊýÀïʹÓÃlibMagicµÄÑÜÉú¿â´¦ÀíͼƬ¡£
µ±log³ÖÐø³öÏÖÈô¸É´Î500 internal errorʱ½«´íÎóÈÕÖ¾¾ÛºÏ·¢¸øÖ¸¶¨µÄÓÊÏä
Èç¹ûÓÃkenisisÀ´ÊÕ¼¯log£¬ÄÇô¿ÉÒÔÅäÖÃlambdaº¯ÊýʹÆäʹÓÃkenisis stream
°ëÒ¹12µã£¬·ÖÎöÒ»ÌìÀ´ÊÕ¼¯µÄÊý¾Ý(±ÈÈçclickstream)²¢Éú³É±¨¸æ
ʹÓÃaws×îÐÂÖ§³Ölambda cronjob
µ±Êý¾Ý¿âµÄij¸ö×Ö¶ÎÐÞ¸Äʱ×öЩʺó´¦Àí
Èç¹ûʹÓÃdynamodb£¬Í¬ÉÏ(ÅäÖÃlambdaº¯ÊýʹÆäʹÓÃdynamodb)
Èç¹ûʹÓÃRDBMS£¬¿ÉÒÔʹÓÃdatabase trigger + lambda cronjob
Ïë½øÒ»²½ÉîÈë´úÂëµÄͯЬ£¬¿ÉÒÔ¿´ÎÒµÄÕâ¸örepo: https://github.com/tyrchen/aws-lambda-thumbnail
¡£Ëü½ÓÊÕS3µÄObject Create Event£¬²¢¶ÔeventÖÐËùÊöµÄͼƬ×öresize£¬´úÂëʹÓÃes6Íê³É¡£ÎªÁ˼ò±ãÆð¼û£¬Ã»ÓÐʹÓÃcloudformation´´½¨/¸üÐÂlambda
function£¬¶øÊÇʹÓÃÁËaws CLI(¼ûmakefile)¡£Èç¹ûÏëÒªÔËÐд˴úÂ룬ÄãÐèÒª¶¨Òå×Ô¼ºµÄ
$(LAMBDA_ROLE)£¬ÊÖ¹¤´´½¨S3 bucket²¢½«ÆäºÍlambdaº¯Êý¹ØÁª(Ŀǰaws cli²»Ö§³ÖS3
event)¡£
ʹÓÃlambda´¦Àí´óÊý¾Ý
lambda½üºõÎÞÏÞÀ©ÈݵÄÄÜÁ¦Ê¹µÃÎÒÃÇ¿ÉÒÔºÜÇáËɵؽøÐдóÈÝÁ¿Êý¾ÝµÄmap/reduce¡£Äã¿ÉÒÔʹÓÃÒ»¸ölambdaº¯Êý·ÖÅÉÊý¾Ý¸øÁíÒ»¸ölambdaº¯Êý£¬Ê¹ÆäÖ´ÐгÉǧÉÏÍò¸öÏàͬµÄʵÀý¡£¼ÙÉèÔÚÄãµÄS3Àï´æ·Å׏ýÈ¥Ò»Äê¼äÿСʱһ·ÝµÄÈÕÖ¾Îļþ£¬Îª×ösecurity
audit£¬ÄãÐèÒª´ÓÖÐÕÒ³ö·ÇÕý³£·ÃÎʵÄÈÕÖ¾²¢¾ÛºÏ¡£Èç¹ûʹÓÃlambda£¬Äã¿ÉÒÔ°Ñ·ÃÎʸ߷åÆÚ(7am-11pm)ÿÁ½Ð¡Ê±µÄÈÕÖ¾£¬»òÕß·ÃÎÊµÍ¹ÈÆÚÿËÄСʱµÄÈÕÖ¾½»¸øÒ»¸ölambdaº¯Êý´¦Àí£¬´¦Àí½á¹û´æÈëdynamodb¡£ÕâÑù»áͬʱÔËÐнüǧ¸ölambdaº¯Êý(24
x 365 / 10)£¬ÔÚ²»µ½Ò»·ÖÖÓµÄʱ¼äÄÚÍê³ÉÕû¸ö¹¤×÷¡£Í¬ÑùµÄÊÂÇé½»¸øEC2È¥×öµÄ»°£¬µ¥µ¥ÎªÕâЩinstanceÅäÖÃÍøÂç¾ÍÈÃÈËÍ·ÌÛ£ºinstanceµÄÊýÁ¿¿ÉÄÜÒѾ³¬³öÁË×ÓÍøÖÐÊ£ÓàIPµØÖ·µÄÊýÁ¿(±ÈÈ磬ÄãµÄVPCʹÓÃÁË24λÑÚÂë)¡£
ͬʱ£¬ÕâÑùÒ»¸öÁ¿¼¶µÄ´¦ÀíËùÐèµÄ»¨·Ñ¼¸ºõ¿ÉÒÔºöÂÔ²»¼Æ¡£¶øEC2²»×ãһСʱ°´Ò»Ð¡Ê±¼Æ·Ñ£¬ÉÏǧ̨t2.smallÔËÐÐһСʱµÄ»¨·ÑÔ¼µÈÓÚ26ÃÀ½ð£¬Ï൱¿É¹Û¡£
ʹÓÃlambda´øÀ´µÄ¼Ü¹¹ÓÅÊÆ
Èç¹û˵lambdaΪʼþ´¦ÀíºÍijЩ´óÈÝÁ¿Êý¾ÝµÄ¿ìËÙ´¦Àí´øÀ´ÁËеÄ˼·£¬²¢ÊµÊµÔÚÔÚÊ¡ÏÂÁËÔÚ»ù´¡ÉèÊ©ºÍ¹ÜÀíÉϵÄÕæ½ð°×Òø£¬ÄÇô£¬ÆäÔڼܹ¹ÉÏÒ²´øÀ´ÁËеÄ˼·ºÍÓÅÊÆ¡£
webϵͳÊÇÌìÈ»ÀëÉ¢µÄϵͳ£¬ÀïÃæº¸ÇÁËÖÚ¶à´ó´óСС£¬»ò²¢Áª£¬»ò´®ÁªµÄ×Óϵͳ¡£ÒòΪ»ù´¡ÉèÊ©µÄ³É±¾ÎÊÌ⣬ºÜ¶àʱºòÎÒÃÇ×öÁËÂß¼ÉϵķֲãºÍ½âñȴÔÚÎïÀíÉϽ«Æä²¿ÊðÔÚÒ»Æð£¬ÕâΪscalabilityºÍmanagement¶¼´øÀ´ÁËһЩÒþ»¼¡£scalabilityÉϵÄÒþ»¼ºÃÀí½â£¬managementÉϵÄÒþ»¼ÊÇÖ¸ÕâÎÞÐΰÑdevºÍops·Ö³É²»Í¬µÄteam£ºÒ»¸ö¸ödev
team¿ÉÒÔºÍÂß¼ÉϵÄ×Óϵͳһһ¶ÔÓ¦£¬µ«opsÈ´Òª¼¯ÖÐÆðÀ´´¦Àí²¿ÊðµÄÎÊÌ⣬ÃâµÃÒ»¸öÂß¼ÉÏ¡¸½âñµÄ¹¦ÄܸüУ¬ÔÚÎïÀíÉÏÈ´Ó°ÏìÁËÕû¸öϵͳµÄÕý³£ÔËÐС£ÕâÖÖ»ì´îµÄ¹ÜÀí¼Ü¹¹ÊƱػáÓ°Ï첿ÊðµÄËٶȺÍЧÂÊ£¬ºÍ¡¸Ò»¸öteam¸ºÔð´Ó¹¦ÄÜ¿ª·¢µ½ÉÏÏßËùÓеÄÊÂÇ项µÄ˼·ÊÇÏà㣵ġ£
¾Ù¸öÀý×Ó£º¡¸Óû§ÉÏ´«Í¼Æ¬Ê±½«Í¼Æ¬Çиî³ÉºÏÊʵijߴ硹ÕâÒ»ÐèÇó¿ÉÄÜÔÚ²»¶Ï±ä»¯ºÍÓÅ»¯¡£¶ÔÓÚÈκÎʧ½¹µÄÕÕÆ¬ÎÒÃÇ»¹Ï£Íû×öһЩ½¹¾àÉϵÄÓÅ»¯£¬´ËÍ⣬Èç¹ûÉÏ´«µÄÊÇÍ·Ïñ£¬ÄÇôÎÒÃÇÏ£ÍûÇиîµÄλÖÃÊÇ×îºÏÊʵÄÍ·ÏñµÄλÖã¬Èç¹ûÉÏ´«µÄÊÇÕÕÆ¬£¬³ýÁËÇиîÍ⣬ÎÒÃÇ¿ÉÄÜ»¹ÒªÉú³ÉºÚ°×/»Ò¶ÈµÈµÈ²»Í¬Ö÷ÌâµÄͼƬ¡£Õâ¸ö¹¦ÄÜÔÚ²»¸Ä±äÒÑÓнӿڵÄǰÌáÏ£¬²¢²»»áÓ°ÏìÆäËûÍŶӵŤ×÷£¬µ«ÒòΪºÍÆäËû¹¦ÄÜ·ÅÔÚÒ»Æð²¿Êð£¬ËùÒÔ²¿ÊðµÄ¹¤×÷²¢²»ÄÜ×Ô¼ºËµÁËËã¡£ÒòΪ²¿Êð½»ÓÉרÃŵÄopsÍŶÓÍê³É(¿ÉÄÜÒ»Ì첿ÊðÒ»´Î£¬Ò²¿ÉÄÜÒ»Öܲ¿ÊðÒ»´Î)£¬Õâ¸öÍŶÓÎÞ·¨ºÜ¿ìµØ°ÑһЩÓÐÒâ˼µÄµã×ÓÄóöÀ´ÔÚÉú²ú»·¾³ÊÔÑ飬ÍÏÀÛÁËÊÔ´íºÍ´´Ð¡£
¶ølambda½â¾öÁË»ù´¡ÉèÊ©ÉϵÄÎÊÌ⣬ÿ¸ö×ÓϵͳÉõÖÁ×Ó¹¦ÄÜ(Сµ½º¯Êý¼¶µÄÁ£¶È)¶¼¿ÉÒÔ¶ÀÁ¢²¿Êð£¬Õâ¾ÍÈù¦ÄÜ¿ª·¢ÎÞ±ÈÇáËÉ¡£Ö»Òª½ç¶¨ºÃʼþÁ÷µÄÊäÈëÊä³ö£¬ÈκÎʼþ´¦ÀíµÄ¹¦Äܱ¾Éí¿ÉÒÔ°´ÕÕ×Ô¼ºÍŶӵĽÚ×à¸üС£
²¿ÊðºÍ¹ÜÀíÉϵĸı䷴¹ýÀ´»áÓ°Ïì¼Ü¹¹£¬´Ù³ÉÒÔmicro-serviceΪÖ÷ÌåµÄϵͳ¼Ü¹¹¡£micro-serviceÊëºÃÊ뻵ĿǰÉÐÓÐÕùÂÛ£¬µ«micros-ervice²»½öÓµ±§Èí¼þÉè¼ÆÉϵĽâñͬʱӵ±§Èí¼þ²¿ÊðÉϵĽâñîÊDz»ÕùµÄÊÂʵ¡£Ò»¸öwebϵͳµÄ³É°ÜºÍÆä²¿Êð·½°¸ÓÐ×ÅÃÜÇеĹØÏµ£¬ñîºÏ¶ÈÔ½µÍµÄ²¿Êð·½°¸£¬Æä¾Ö²¿²¿Êð¸üеÄÄÜÁ¦Ò²¾ÍԽǿ£¬¶øÒ»¸öϵͳԽ´óÔ½¸´ÔÓ£¬¾ÍÔ½²»ÈÝÒ×ÕûÌ岿Êð£¬ËùÒÔ¶Ô¾Ö²¿²¿ÊðµÄÒªÇóÒ²Ô½À´Ô½¸ß¡£ÕâÈçͬһ¸öÓлúÌ壬Æä×ÔÎÒ¸üдÓÀ´²»¿¿¡¸ËÀÍö-ÖØÉú¡¹£¬¶øÊÇͨ¹ýг´úл¡£
´ËÍ⣬lambda»¹ÊÇÒ»¸ö³ä·ÖÊÜÏ޵Ļ·¾³£¬¸ø´úÂëµÄ׫д´øÀ´ºÜ¶àÔ¼ÊøÌõ¼þ¡£ÎÒ֮ǰÔÚ̸¼Ü¹¹µÄʱºòÔø¾Ìáµ½£¬Ô¼ÊøÌõ¼þÊǺÃÊ£¬Éè¼ÆÈí¼þÊ×ÏÈÒª¸ãÃ÷°×Ô¼ÊøÌõ¼þ¡£lambda×îÇ¿µÄ¼¸¸öÔ¼ÊøÊÇ£º
lambdaº¯Êý±ØÐëÉè¼Æ³ÉÎÞ״̬µÄ£¬ÒòΪÆäËùÓÐ״̬(Äڴ棬´ÅÅÌ)¶¼»áÔÚÆä¶Ì¶ÌµÄÉúÃüÖÜÆÚ½áÊøºóÏûʧ
lambdaº¯ÊýÓÐ×î´óÄÚ´æÏÞÖÆ
lambdaº¯ÊýÓÐ×î´óÔËÐÐʱ¼äÏÞÖÆ
ÕâЩÏÞÖÆÒªÇóÄã°Ñÿ¸ölambdaº¯ÊýÉè¼ÆµÃ¾¡¿ÉÄܼòµ¥£¬Ò»´ÎÖ»×öÒ»¼þÊ£¬µ«°ÑËü×öµ½×îºÃ¡£ºÜ·ûºÏunixµÄÕÜѧ¡£·´¹ýÀ´£¬ÕâЩÏÞÖÆÇ¿ÆÈÄã½ÓÊܼ«¼òÖ÷ÒåÖ®Í⣬ΪÄã´øÀ´ÁËÎÞÏÞÀ©Èݵĺô¦¡£
JAWSºÍserver-less architecture
Á½Èý¸öÔÂǰ£¬ÎÒ½éÉÜÁËJAWS£¬µ±Ê±ËüÊÇÒ»¸öÀûÓÃaws¸Õ¸ÕÍÆ³öµÄAPI gatewayºÍlambdaÅäºÏ£¬À´ÌṩREST
APIµÄ¹¤¾ß£¬Èç¹û¸¨ÒÔ¼ÜÉèÔÚS3Éϵľ²Ì¬×ÊÔ´£¬¿ÉÒÔ´òÔìÒ»¸öÍêÈ«²»ÒÀÀµEC2µÄÍøÕ¾¡£Õâ¸öÏîÄ¿´ÓÁíÒ»¸ö½Ç¶ÈÚ¹ÊÍÁËlambdaµÄ¾Þ´óÍþÁ¦£¬ËùÒÔdemoÒ»³ö¯£¬¾Í»ñµÃÁËÒ»Á½Ç§µÄgithub
star¡£Èç½ñJAWSÓðÒíÕéÖÁ·áÂú£¬ÍƳöÁËÉд¦ÔÚbetaµÄjaws fraemwork v1°æ±¾£ºhttps://github.com/jaws-framework/JAWS£¬²¢ÇÒÔÚre:invent
2015ÉÏ×öÁËÏ൱¾«²ÊµÄÖ÷ÌâÑݽ²(¼ûgithub)¡£JAWS framework´óÁ¿Ê¹ÓÃAPI gateway£¬cloudformationºÍlambdaÀ´Ìṩserverless
architecture£¬ÖµµÃ¹Ø×¢¡£
Ò»¸öÍêÕûµÄserverless website¿ÉÒÔÕâô¿¼ÂÇ£º
Óû§×¢²áʹÓãºAPI gateway£¬lambda£¬dynamodb£¬SES(·¢Óʼþ)
Óû§µÇ¼ʹÓãºAPI gateway£¬lambda£¬»òÕß(cognitoºÍIAM£¬Èç¹ûÒª¼¯³ÉµÚÈý·½µÇ¼)
Óû§UGC¸÷ÖÖÄÚÈÝ£ºAPI gateway£¬lambda£¬dynamodb
ÆäËûREST API£ºAPI gateway + lambda
¸÷ÖÖʼþ´¦ÀíʹÓÃlambda
ËùÓеľ²Ì¬×ÊÔ´·ÅÔÚS3ÉÏ£¬Ê¹ÄÜstatic website hosting£¬È»ºóͨ¹ýjavascript·ÃÎÊcognito»òÕßREST
API
ÈÕÖ¾´æ·ÅÔÚcloudWatch£¬²¢ÔÚÐèÒªµÄʱºò´¥·¢lambda
clickstream´æÔÚÔÚkenisis£¬²¢´¥·¢lambda
Èç´ËÕâ°ã£¬Ò»¸ö¾ß±¸»ù±¾¹¦ÄܵÄserverless website¾Í´îÆðÀ´ÁË¡£
Èç¹ûÄã¶ÔJAWS¸ÐÐËȤ£¬¿ÉÒÔ³¢ÊÔÎÒÉú³ÉµÄ https://github.com/tyrchen/jaws-test¡£
±ÜÃâʧ¿Ø
lambda´øÀ´µÄ²¿ÊðÉϵĽâñîͬʱÊǰÑË«Èн£¡£³ÉǧÉÏÍò¸ö¹¦Äܸ÷ÒìµÄlambdaº¯Êý(ÔÙ¼ÓÉϸ÷×Ô²»Í¬µÄ°æ±¾)£¬ºÜÈÝÒ×°ÑÏµÍ³ÍÆÏòʧ¿ØµÄ±ßÔµ¡£ËùÒÔ£¬×îºÃͨ¹ýÒÔÏÂÊÖ¶ÎÀ´±ÜÃâʧ¿Ø£º
Ϊlambdaº¯ÊýºÏÀíÃüÃû£ºÊ¹ÓÃÒ»¶¨¹æ¸ñµÄ£¬¶¨ÒåÁ¼ºÃµÄǰ׺(¿ÉÀà±ÈARN)
ʹÓÃcloudformation´¦Àí×ÊÔ´µÄ·ÖÅäºÍ²¿Êð(¿ÉÒÔ¿¼ÂÇJAWS)
¿ÉÊÓ»¯ÏµÍ³µÄʵʱÊý¾ÝÁ÷/ʼþÁ÷(ÀàËÆÏÂͼ) 
(ͼƬÀ´×ÔyoutubeÊÓÆµ½ØÍ¼£ºA Day in the Life of a Netflix Engineer£¬Í¼Æ¬ºÍ±¾ÎĹØÏµ²»´ó£¬µ«Ë¼ÏëÀàËÆ)
ÓÉÓÚ»ùÓÚlambdaµÄÖî¶àÓ¦Óó¡¾°»¹´¦ÔÚ¸Õ¸ÕÆð²½µÄ½×¶Î£¬ËùÒԺܶàorchestrationµÄÊÂÇ黹ÐèÒª×Ô¼º×ö£¬ÏàÐŵÈlambdaµÄʹÓÃÈÕÇ÷³ÉÊìʱ£¬¾ÍÏñdockerÉú̬ȦһÑù£¬»á²úÉúÖÚ¶àµÄorchestrationµÄ¹¤¾ß£¬½â¾ö»òÕß»º½âϵͳʧ¿ØµÄÎÊÌâ¡£
|