Microclients for Your Microservices (Midwest.io 2014)

Post on 23-Jun-2015

186 views 1 download

description

"Microservice" is a term that has started popping up as a way to describe loosely coupled systems made of many small applications. While the general ideas of SOA aren't new, recent activity has pushed them towards ever smaller services with smaller, simpler interfaces—often JSON over HTTP in the REST or hypermedia model. This talk will cover best practices for building microclients for these microservices, focusing in particular on leveraging the hypermedia model and some of the neglected parts of REST. The examples for this talk will be in Ruby, but the design principles are widely applicable, and HTTP is HTTP no matter where you program. Writing servers is only half the battle to make the microservice model work. We need great clients too.

Transcript of Microclients for Your Microservices (Midwest.io 2014)

0LFURFOLHQWV��IRU�<RXU�0LFURVHUYLFHV

7KH�2WKHU�+DOI�RI�<RXU�$3Ζ

Ȋ���DQ�DSSURDFK�WR�GHYHORSLQJ�D�VLQJOH�DSSOLFDWLRQ�DV�D�VXLWH�RI�VPDOO�VHUYLFHV��HDFK�UXQQLQJ�LQ�LWV�RZQ�SURFHVV�DQG�FRPPXQLFDWLQJ�ZLWK�OLJKWZHLJKW�PHFKDQLVPV��RIWHQ�DQ�+773�UHVRXUFH�$3Ζ��7KHVH�VHUYLFHV�DUH�EXLOW�DURXQG�EXVLQHVV�FDSDELOLWLHV�DQG�LQGHSHQGHQWO\�GHSOR\DEOH�E\�IXOO\�DXWRPDWHG�GHSOR\PHQW�PDFKLQHU\��7KHUH�LV�D�EDUH�PLQLPXP�RI�FHQWUDOL]HG�PDQDJHPHQW�RI�WKHVH�VHUYLFHV��ZKLFK�PD\�EH�ZULWWHQ�LQ�GLIIHUHQW�SURJUDPPLQJ�ODQJXDJHV�DQG�XVH�GLIIHUHQW�GDWD�VWRUDJH�WHFKQRORJLHV�ȋ

ȃ0DUWLQ�)RZOHU�DQG�-DPHV�/HZLV

Ȋ���DQ�DSSURDFK�WR�GHYHORSLQJ�D�VLQJOH�DSSOLFDWLRQ�DV�D�VXLWH�RI�VPDOO�VHUYLFHV��HDFK�UXQQLQJ�LQ�LWV�RZQ�SURFHVV�DQG�FRPPXQLFDWLQJ�ZLWK�OLJKWZHLJKW�PHFKDQLVPV��RIWHQ�DQ�+773�UHVRXUFH�$3Ζ��7KHVH�VHUYLFHV�DUH�EXLOW�DURXQG�EXVLQHVV�FDSDELOLWLHV�DQG�LQGHSHQGHQWO\�GHSOR\DEOH�E\�IXOO\�DXWRPDWHG�GHSOR\PHQW�PDFKLQHU\��7KHUH�LV�D�EDUH�PLQLPXP�RI�FHQWUDOL]HG�PDQDJHPHQW�RI�WKHVH�VHUYLFHV��ZKLFK�PD\�EH�ZULWWHQ�LQ�GLIIHUHQW�SURJUDPPLQJ�ODQJXDJHV�DQG�XVH�GLIIHUHQW�GDWD�VWRUDJH�WHFKQRORJLHV�ȋ

ȃ0DUWLQ�)RZOHU�DQG�-DPHV�/HZLV

Ȋ���DQ�DSSURDFK�WR�GHYHORSLQJ�D�VLQJOH�DSSOLFDWLRQ�DV�D�VXLWH�RI�VPDOO�VHUYLFHV��HDFK�UXQQLQJ�LQ�LWV�RZQ�SURFHVV�DQG�FRPPXQLFDWLQJ�ZLWK�OLJKWZHLJKW�PHFKDQLVPV��RIWHQ�DQ�+773�UHVRXUFH�$3Ζ��7KHVH�VHUYLFHV�DUH�EXLOW�DURXQG�EXVLQHVV�FDSDELOLWLHV�DQG�LQGHSHQGHQWO\�GHSOR\DEOH�E\�IXOO\�DXWRPDWHG�GHSOR\PHQW�PDFKLQHU\��7KHUH�LV�D�EDUH�PLQLPXP�RI�FHQWUDOL]HG�PDQDJHPHQW�RI�WKHVH�VHUYLFHV��ZKLFK�PD\�EH�ZULWWHQ�LQ�GLIIHUHQW�SURJUDPPLQJ�ODQJXDJHV�DQG�XVH�GLIIHUHQW�GDWD�VWRUDJH�WHFKQRORJLHV�ȋ

ȃ0DUWLQ�)RZOHU�DQG�-DPHV�/HZLV

Ȋ���DQ�DSSURDFK�WR�GHYHORSLQJ�D�VLQJOH�DSSOLFDWLRQ�DV�D�VXLWH�RI�VPDOO�VHUYLFHV��HDFK�UXQQLQJ�LQ�LWV�RZQ�SURFHVV�DQG�FRPPXQLFDWLQJ�ZLWK�OLJKWZHLJKW�PHFKDQLVPV��RIWHQ�DQ�+773�UHVRXUFH�$3Ζ��7KHVH�VHUYLFHV�DUH�EXLOW�DURXQG�EXVLQHVV�FDSDELOLWLHV�DQG�LQGHSHQGHQWO\�GHSOR\DEOH�E\�IXOO\�DXWRPDWHG�GHSOR\PHQW�PDFKLQHU\��7KHUH�LV�D�EDUH�PLQLPXP�RI�FHQWUDOL]HG�PDQDJHPHQW�RI�WKHVH�VHUYLFHV��ZKLFK�PD\�EH�ZULWWHQ�LQ�GLIIHUHQW�SURJUDPPLQJ�ODQJXDJHV�DQG�XVH�GLIIHUHQW�GDWD�VWRUDJH�WHFKQRORJLHV�ȋ

ȃ0DUWLQ�)RZOHU�DQG�-DPHV�/HZLV

Ȋ���DQ�DSSURDFK�WR�GHYHORSLQJ�D�VLQJOH�DSSOLFDWLRQ�DV�D�VXLWH�RI�VPDOO�VHUYLFHV��HDFK�UXQQLQJ�LQ�LWV�RZQ�SURFHVV�DQG�FRPPXQLFDWLQJ�ZLWK�OLJKWZHLJKW�PHFKDQLVPV��RIWHQ�DQ�+773�UHVRXUFH�$3Ζ��7KHVH�VHUYLFHV�DUH�EXLOW�DURXQG�EXVLQHVV�FDSDELOLWLHV�DQG�LQGHSHQGHQWO\�GHSOR\DEOH�E\�IXOO\�DXWRPDWHG�GHSOR\PHQW�PDFKLQHU\��7KHUH�LV�D�EDUH�PLQLPXP�RI�FHQWUDOL]HG�PDQDJHPHQW�RI�WKHVH�VHUYLFHV��ZKLFK�PD\�EH�ZULWWHQ�LQ�GLIIHUHQW�SURJUDPPLQJ�ODQJXDJHV�DQG�XVH�GLIIHUHQW�GDWD�VWRUDJH�WHFKQRORJLHV�ȋ

ȃ0DUWLQ�)RZOHU�DQG�-DPHV�/HZLV

0LFURVHUYLFHV��.H\�%HQHILWVƔ 0DLQWDLQDELOLW\�DQG�IOH[LELOLW\

ż 'HYHORSHU�RZQHUVKLS��Ȋ<RX�EXLOW�LW��\RX�UXQ�LWȋ

Ɣ (QIRUFHG�VHSDUDWLRQ�RI�FRQFHUQVż 653�8QL[�3KLORVRSK\�DW�WKH�DUFKLWHFWXUDO�OHYHO

Ɣ (QDEOH�SRO\JORW�DUFKLWHFWXUHż +HOSV�PDNH�FRQIHUHQFHV�OLNH�WKLV�RQH�UHOHYDQW�DQG�

XVHIXO�WR�PRUH�SHRSOH

ȃ/RWV�RI�SHRSOH

ȊΖVQȇW�WKLV�MXVW�62$�UHEUDQGHG"ȋ

0LFURVHUYLFHV��'LIIHUHQFHVƔ /LJKW�ZHLJKW�GHSOR\PHQWƔ $�EUHDN�ZLWK�FHQWUDOL]HG�VWDQGDUGVƔ $V\PPHWULFDO�UHODWLRQVKLSVƔ :HE�IULHQGO\���ZHE�QDWLYHƔ Ȋ6PDUW�HQGSRLQWV��GXPE�SLSHVȋ

,PSOLFDWLRQV�IRU�0LFURFOLHQWVƔ 6KRXOG�DOVR�EH�OLJKW�ZHLJKW�WR�DYRLG�FDQFHOLQJ�

RXW�EHQHILWVƔ 0XVW�VXSSO\�VWUXFWXUH�WKDW�SUHYLRXVO\�FDPH�

IURP�FHQWUDOL]HG�VRXUFHƔ :RUN�EHVW�ZKHQ�EXLOW�DURXQG�ZHE�SULQFLSOHV

:NK�ƖSOIXUƗ�LUX�HUZN�YKX\OIKY�GTJ�IROKTZY�XKLKXY�ZU�SOTOSO`OTM�ZNK�IUMTOZO\K�U\KXNKGJ�OT\UR\KJ�OT�NG\OTM�VGXZ�UL�GT�GVVROIGZOUT�HK�K^ZXGIZKJ�OTZU�GT�G[ZUTUSU[Y�IUSVUTKTZ�

/L�]K�IGTƔZ�KLLOIOKTZR_�SGTGMK�ZNK�IROKTZ�KTJ�UL�SOIXUYKX\OIK�GXINOZKIZ[XK�ZNKT�GJUVZOTM�ZNK�GVVXUGIN�SG_�Z[XT�U[Z�ZU�HK�SUXK�ZXU[HRK�ZNGT�OZ�OY�]UXZN�

,QWHJUDWLRQĭPFVNG�0[$3,

��ENCTT�&NKGOU

����FGH�EPOO

������#EQPP�]] �)CTCFC[�PGY��WTN� !�DCUGBWTN��FP�]H]

��������H�CFCRVGT��)CTCFC[�FGHCWNVBCFCRVGT

���������� !�CFFKVKQPCN�OKFFNGYCTG���

������GOF�����

����GOF

��GOF

GOF

,QWHJUDWLRQ

EQPP� �)CTCFC[�PGY�WTN��JVVR���CRK�O[�CRR�EQO��FP�]H]

�H�CFCRVGT��)CTCFC[�FGHCWNVBCFCRVGT

GOF

EQPP�IGV��WUGTU�������DQF[

��� !�]�PCOG�� !��'CPKGN����V[RG�� !��JWOCP�_

,QWHJUDWLRQ��+773�&OLHQW�/LEUDULHVƔ $XWKHQWLFDWLRQƔ /RJJLQJƔ &RQWHQW�QHJRWLDWLRQƔ 5HVXOW�WUDQVIRUPDWLRQ

([WUDFWLRQ

ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

������YQTM��YQTM��YQTM

����TGUWNV

��GOF

GOF

([WUDFWLRQ

ĭPFVNG�0[$3,

�ENCTT�&NKGOU

���FGH�EPOO��������

���FGH�IGUBHKDBCUBKOFGY�K�

�����EQPP�IGV��HKDQPCEEK��]KPFGZ��K_��DQF[

���GOF

�GOF

GOF

([WUDFWLRQ

ĭPFVNG�0[$3,

�ENCTT�&NKGOU

���FGH�EPOO��������

���FGH�IGUBHKDBCUBKOFGY�K�

�����EQPP�IGV��HKDQPCEEK��]KPFGZ��K_��DQF[

���GOF

�GOF

GOF

([WUDFWLRQ

ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

����ENKGPV�IGVBHKDBCVBKPFGZ�K��HGVEJ�HKD�

��GOF

��FGH�ENKGOU

����#ENKGPV�]] �0[$3,��&NKGPV�PGY�UQOGBRCTCOU�

��GOF

�GOF

([WUDFWLRQ

ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

����ENKGPV�IGVBHKDBCVBKPFGZ�K��HGVEJ�HKD�

��GOF

��FGH�ENKGOU

����#ENKGPV�]] �0[$3,��&NKGPV�PGY�UQOGBRCTCOU�

��GOF

�GOF

([WUDFWLRQ

ENCTT�0CUJ8UKNKUZ

��FGH�KOKUKCNK[G�ENKGPV� �PKN�

����#ENKGPV� ��ENKGPV�]]�0[$3,�FGHCWNVBENKGPV�

��GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

���FGH�KOKUKCNK[G�PWODGT��ENKGPV� �OKN�

�����#PWODGT� �PWODGT

�����#ENKGPV� ��ENKGPV�]]�0[$3,�FGHCWNVBENKGPV�

���GOF

�������

�GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

���FGH�KOKUKCNK[G�PWODGT��ENKGPV� �OKN�

�����#PWODGT� �PWODGT

�����#ENKGPV� ��ENKGPV�]]�0[$3,�FGHCWNVBENKGPV�

���GOF

�������

�GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

��������

���FGH�HKDBCUBKOFGY

�����#ENKGPV�IGVBHKDBCVBKPFGZ�#PWODGT�

���GOF

���FGH�QSKĭG"�����

���FGH�HCWPSKUG"�����

�GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

��������

���FGH�HKDBCUBKOFGY�QRVKQPU�

�����TGURQPUG� �#ENKGPV�IGVBHKDBCVBKPFGZ�PWODGT�

�����QRVKQPU>�TCY@�"�TGURQPUG���TGURQPUG�DQF[�HGVEJ�HKD�

���GOF

��������

�GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

�������

���FGH�IGU�CEVKQP�

�����#ENKGPV�EQPP�IGV���PWODGTU��]#PWODGT_��]CEVKQP_��

���GOF

�������

�GOF

GOF

0RGHOVĭPFVNG�0[$3,

�ENCTT�6ĭCSU1VĭDGS

���FGH�IGU�CEVKQP�

�����#ENKGPV�EQPP�IGV���PWODGTU��]#PWODGT_��]CEVKQP_��

���GOF

���FGH�QSKĭG"�QRVKQPU�

�����TGURQPUG� �IGV�RTKOG�

�����QRVKQPU>�TCY@�"�TGURQPUG���TGURQPUG�DQF[�HGVEJ�KUBRTKOG�

���GOF

�GOF

GOF

,GLRPDWLF�,QWHUIDFHVPWODGTU� ��������

PWODGTU�UGNGEV��GXGP"�

��� !�>��������������@

UOCTVBPWODGTU� ���������OCR�]�]P]

�0[$3,��6OCTV1WODGT�PGY�P�

_

UOCTVBPWODGTU�UGNGEV��RTKOG"�

��� !�>����������@�

(UURU�+DQGOLQJ6HUYHU�SHUVSHFWLYHƔ %DG�UHTXHVW��UHWXUQ�HUURUƔ ([FHSWLRQ�LQ�H[HFXWLRQ��

UHWXUQ�HUURU

&OLHQW�SHUVSHFWLYHƔ 6HQG�UHTXHVW��JHW�HUURUƔ 7KURZ�H[FHSWLRQ"��FUDVK�Ɣ %XEEOH�XS�WKURXJK�VWDFN"Ɣ &RQYHUW�WR�IULHQGO\�

PHVVDJH"

(UURU�+DQGOLQJ

ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

������YQTM��YQTM��YQTM

����TGUWNV

��GOF

GOF

(UURU�+DQGOLQJ�ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

������YQTM��YQTM��YQTM

����TGUWNV

��SGTEVG� !�G

����NQIIGT�GTTQT��)KDQPCEEK�GTTQT���]G�OGUUCIG_���

����]GTTQT��G�OGUUCIG��OGUUCIG���:GTG�UQTT[��OCVJ�KU�QHH�

TKIJV�PQY�_

��GOF

GOF

(UURU�+DQGOLQJ

HKD� �0CVJ8VKNKV[�PGY�IGVBHKDBCVBKPFGZ�K�

KH�HKD>�GTTQT@

���FQ�UQOGVJKPI�CDQWV�[QWT�RTQDNGO

���FQ�YG�GXGP�MPQY�YJCV�JCRRGPGF"

GNTG

���RTQEGGF�YKVJ�CRRNKECVKQP

GOF

(UURU�+DQGOLQJ�ENCTT�0CUJ8UKNKUZ

��FGH�IGUBHKDBCUBKOFGY�K�

������YQTM��YQTM��YQTM

����TGUWNV

��SGTEVG� !�G

����NQIIGT�GTTQT��)KDQPCEEK�GTTQT���]G�OGUUCIG_���

����OKN

��GOF

GOF

(UURU�+DQGOLQJ

HKD� �0CVJ8VKNKV[�PGY�IGVBHKDBCVBKPFGZ�K�

QPGBDKIIGTBVJCPBHKD� �HKD����

(UURU�+DQGOLQJ

1Q0GVJQF(TTQT��WPFGHKPGF�OGVJQF�Ĭ��HQT�PKN�1KN&NCUU

(UURU�+DQGOLQJƔ 6ZDOORZLQJ�HUURUV�WKURZV�DZD\�LQIRUPDWLRQ�IRU�

KHOSLQJ�WR�SUHYHQW�VXEVHTXHQW�RQHV�Ɣ ΖI�RXU�PLFURVHUYLFHV�DUH�SDUW�RI�RXU�ȊVLQJOH�

DSSOLFDWLRQȋ��ZH�VKRXOG�FDUH�DV�PXFK�DERXW�GHDOLQJ�ZLWK�HUURUV�WKDW�DULVH�IURP�WKHP�DV�IURP�DQ\ZKHUH�HOVH�

Ɣ 7KDW�GRHVQȇW�PHDQ�VXUIDFLQJ�WKH�IDFW�WKDW�ZH�DUH�FRPPXQLFDWLQJ�ZLWK�D�UHPRWH�VHUYLFH�DW�HYHU\�WXUQ

(UURU�+DQGOLQJ�ENCTT�0CUJ8UKNKUZ

�)KDQPCEEK&CNEWNCVKQP(TTQT���6VCPFCTF(TTQT��GOF

�FGH�IGUBHKDBCUBKOFGY�K�

�����YQTM��YQTM��YQTM

���TGUWNV

�SGTEVG� !�G

���NQIIGT�GTTQT��)KDQPCEEK�GTTQT���]G�OGUUCIG_��

���SCKTG�)KDQPCEEK&CNEWNCVKQP(TTQT�PGY��&QWNF�PQV�ECNEWNCVG�

)KDQPCEEK�TGUWNV�CV�KPFGZ��]K_��

�GOF

GOF

(UURU�+DQGOLQJ�ENCTT�0CUJ8UKNKUZ

�)KDQPCEEK&CNEWNCVKQP(TTQT���6VCPFCTF(TTQT��GOF

�FGH�IGUBHKDBCUBKOFGY�K�

���ENKGPV�IGVBHKDBCVBKPFGZ�K��DQF[�HGVEJ�HKD�

�SGTEVG� !�G

���NQIIGT�GTTQT��0CVJ�UGTXGT�GTTQT���]G�OGUUCIG_��

���SCKTG�)KDQPCEEK&CNEWNCVKQP(TTQT�PGY��&QWNF�PQV�ECNEWNCVG�

)KDQPCEEK�TGUWNV�CV�KPFGZ��]K_��

�GOF

GOF

(UURU�+DQGOLQJ'LIIHUHQW�IURP�KDQGOLQJ�UHTXHVWV�WR�H[WHUQDO�VHUYLFHV��6HUYLFH�RXWDJHV�DUH��XQIRUWXQDWHO\��QRW�DQ�H[FHSWLRQDO�FRQGLWLRQ��7KH\�GRQȇW�UHTXLUH�D�FKDQJH�RI�RXU�FRGH�

7HVWLQJƔ 0XVW�EH�SRVVLEOH�LQ�LVRODWLRQ

ż .H\�IRU�FRQVLVWHQW�EHKDYLRUƔ &DQ�VHUYH�DV�DFFHSWDQFH�WHVWV�DQG�ȊOLYLQJ�

GRFXPHQWDWLRQȋ�IRU�VHUYLFHż 7KLV�LV�D�TXHVWLRQ�RI�HIILFLHQF\

5HOHDVH�'HSOR\PHQW0DNH�D�VWDQG�DORQH�OLEUDU\Ɣ ΖWȇV�D�ZD\�WR�LQVXODWH�RQH��RU�PXOWLSOH��DSSOLFDWLRQV�

IURP�FKDQJHV�LQ�DQRWKHU�ZLWKRXW�H[SRVLQJ�LPSOHPHQWDWLRQ�GHWDLOV�WR�KRVW�DSSOLFDWLRQ

Ɣ 6LQJOH�5HVSRQVLELOLW\�3ULQFLSOH��DJDLQ�Ɣ ΖWȇV�ZKDW�WKRVH�H[WHUQDO�$3Ζ�FOLHQWV�KDYH�

9HUVLRQLQJ(QIRUFH�&RPSDWLELOLW\Ɣ 5HTXLUHV�FRRSHUDWLRQ�IURP�WKH�VHUYHUƔ 3XW�D�YHUVLRQ�LGHQWLILHU�LQ�D�FXVWRP�KHDGHU��SURYLGH�LW�

DW�D�URRW�OHYHO�UHVRXUFH�GHVFULELQJ�WKH�VHUYLFH��UHWXUQ�LW�WKH�LQLWLDO�DXWKHQWLFDWLRQ�UHVSRQVH

Ɣ 5HTXLULQJ�WKH�FOLHQW�WR�VHQG�D�YHUVLRQ�DQG�H[SHFWLQJ�WKH�VHUYHU�WR�UHVSRQG�FRUUHFWO\�WR�DQ\�RQH�RI�WKHP�VWDUWV�WR�JLYH�XS�RQ�WKH�ȊPLFURȋ�DJHQGD

7KH�)XWXUH�

-621�$3,Ɣ CRRNKECVKQP�XPF�CRK�LUQP

Ɣ Ȋ%\�IROORZLQJ�VKDUHG�FRQYHQWLRQV��\RX�FDQ�LQFUHDVH�SURGXFWLYLW\��WDNH�DGYDQWDJH�RI�JHQHUDOL]HG�WRROLQJ��DQG�IRFXV�RQ�ZKDW�PDWWHUV��\RXU�DSSOLFDWLRQ�ȋ

-621�$3,Ɣ CRRNKECVKQP�XPF�CRK�LUQP

Ɣ Ȋ%\�IROORZLQJ�VKDUHG�FRQYHQWLRQV��\RX�FDQ�LQFUHDVH�SURGXFWLYLW\��WDNH�DGYDQWDJH�RI�JHQHUDOL]HG�WRROLQJ��DQG�IRFXV�RQ�ZKDW�PDWWHUV��\RXU�DSSOLFDWLRQ�ȋ

-621�$3,]

��KF��������

��VKVNG����0KETQENKGPVU�HQT�0KETQUGTXKEGU��

��NKPMU���]

����CWVJQT���]

������JTGH����JVVR���OKFYGUV�KQ�RGQRNG�����

������KF��������

������V[RG����RGQRNG�

���_

�_

_

+$/��+\SHUWH[W�$SSOLFDWLRQ�/DQJXDJH�Ɣ CRRNKECVKQP�JCN�LUQP

Ɣ ȊΖQVWHDG�RI�XVLQJ�DG�KRF�VWUXFWXUHV��RU�VSHQGLQJ�YDOXDEOH�WLPH�GHVLJQLQJ�\RXU�RZQ�IRUPDW��\RX�FDQ�DGRSW�+$/V�FRQYHQWLRQV�DQG�IRFXV�RQ�EXLOGLQJ�DQG�GRFXPHQWLQJ�WKH�GDWD�DQG�WUDQVLWLRQV�WKDW�PDNH�XS�\RXU�$3Ζ�ȋ

+$/��+\SHUWH[W�$SSOLFDWLRQ�/DQJXDJH�Ɣ CRRNKECVKQP�JCN�LUQP

Ɣ ȊΖQVWHDG�RI�XVLQJ�DG�KRF�VWUXFWXUHV��RU�VSHQGLQJ�YDOXDEOH�WLPH�GHVLJQLQJ�\RXU�RZQ�IRUPDW��\RX�FDQ�DGRSW�+$/V�FRQYHQWLRQV�DQG�IRFXV�RQ�EXLOGLQJ�DQG�GRFXPHQWLQJ�WKH�GDWD�DQG�WUDQVLWLRQV�WKDW�PDNH�XS�\RXU�$3Ζ�ȋ

+$/��+\SHUWH[W�$SSOLFDWLRQ�/DQJXDJH�]

��KF��������

��VKVNG����0KETQENKGPVU�HQT�0KETQUGTXKEGU��

��BNKPMU���]

����GC�CWVJQT���]

��������JTGH�����RGQRNG�����

��������KF�������

�����_

���_

�_

_

Ɣ +773�&OLHQWƔ 7HVWLQJ�WRROV�ZLWK�PRFNLQJ��UHFRUGLQJ

Ɣ 'HSOR\PHQW�PHFKDQLVP��*HPIXU\��HYHQ�*LW+XE�

7RROV

.HHS�,W�6LPSOHƔ ([SRVH�LGLRPDWLF�LQWHUIDFHV�WR�KRVW�HQYLURQPHQW��

LQFOXGLQJ�HUURU�KDQGOLQJƔ 6HWXS�WHVWLQJ�WR�ZRUN�LQ�LVRODWLRQƔ 2UJDQL]H�SURMHFW�IRU�XQREWUXVLYHQHVV��HDV\�LWHUDWLRQ��

DQG�VHDPOHVV�GHSOR\PHQWƔ 5HXVH�IDPLOLDU�RSHQ�$3Ζ�DQG�RSHQ�VRXUFH�

FRQYHQWLRQV�WR�OHYHUDJH�H[LVWLQJ�NQRZOHGJH

:NK�ƖSOIXUƗ�LUX�HUZN�YKX\OIKY�GTJ�IROKTZY�XKLKXY�ZU�SOTOSO`OTM�ZNK�IUMTOZO\K�U\KXNKGJ�OT\UR\KJ�OT�NG\OTM�VGXZ�UL�GT�GVVROIGZOUT�HK�K^ZXGIZKJ�OTZU�GT�G[ZUTUSU[Y�IUSVUTKTZ���

���]NOIN�GRYU�SKGTY�SOTOSO`OTM�ZNK�IUYZ�UL�K^VKXOSKTZGZOUT�]OZN�TK]�RGTM[GMKY�GTJ�ZUURY�

7KDQN�<RX��'DQLHO�/X[HPEXUJ&72�DW�%DQGZDJRQ��EDQGZDJRQ�LR���#+L%DQGZDJRQ�

#GOX[HPEXUJJLWKXE�FRP�GOX[HPEXUJ