Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gaurun / A general push notification server in Go

Gaurun / A general push notification server in Go

Gaurun 〜A general push notification server in Go〜

Tatsuhiko Kubo

June 21, 2015
Tweet

More Decks by Tatsuhiko Kubo

Other Decks in Technology

Transcript

  1. @cubicdaiya / Tatsuhiko Kubo w 4PGUXBSF&OHJOFFS!.FSDBSJ *OD w *OGSBTUSVDUVSF&OHJOFFSJOH w

    (P w OHJOYCVJME TMBDLCPBSE (BVSVO w OHJOY w OHY@TNBMM@MJHIU OHY@EZOBNJD@VQTUSFBN
  2. Why Go? w "TZODSPOPVTQVTIJTSFRVJSFE w QVTIJTUSJHHFSFEJO"1*TFSWFS w DPNNFOU MJLF CVZ

    TFMM w "1*TFSWFSNVTUSFTQPOTFRVJDLMZ w "TZODISPOJ[BUJPOJTDPNQMJDBUFE w "1*TFSWFS!.FSDBSJJT"QBDIF 1)1
  3. half a year ago… ($. "1/T 8PSLFS "MMQVTIOPUJpDBUJPOTBSFBTZODISPOPVT 2VFVF 8PSLFS

    8PSLFS QVTI EFRVFVF "1*4FSWFS "1*4FSWFS #BUDI4FSWFS FORVFVF "1*4FSWFS
  4. But very complicated… w +PC2VFVF w 2. w .VMUJ1SPDFTT8PSLFSXJUI1)1 w

    1)11BSBMMFMT1SFGPSL w 5IFBSDIJUFDUVSFJTOPUTDBMBCMF
  5. Now… ($. "1/T (BVSVO (BVSVO (BVSVO /(*/9 "1*4FSWFS "1*4FSWFS "1*4FSWFS

    #BUDI4FSWFS QVTI XJUI LFFQBMJWF )551 1045QVTI
  6. Bootstrap Gaurun UIFDPEFCFMPXJTTJNQMJpFEGPSFYQMBOBUJPO TUBSUXPSLFSTGPSQVTI HBVSVO4UBSU1VTI8PSLFST XPSLFS/VN RVFVF/VN  )551"1*T IUUQ)BOEMF'VOD

    lQVTIz HBVSVO1VTI/PUJpDBUJPO)BOEMFS  IUUQ)BOEMF'VOD lTUBUHPz TUBUT(P)BOEMFS  IUUQ)BOEMF'VOD lTUBUBQQz HBVSVO4UBUT(BVSVO)BOEMFS  ʜ TUBSU)551TFSWFS IUUQ-JTUFO"OE4FSWF lz OJM
  7. start workers for push UIFDPEFCFMPXJTTJNQMJpFEGPSFYQMBOBUJPO GVOD4UBSU1VTI8PSLFST XPSLFS/VN RVFVF/VNJOU \ 2VFVFNBLF

    DIBO/PUJpDBUJPO RVFVF/VN  GPSJJXPSLFS/VNJ \ HPQVTI/PUJpDBUJPO8PSLFS  ^ ^
  8. POST /push UIFDPEFCFMPXJTTJNQMJpFEGPSFYQMBOBUJPO GVOD1VTI/PUJpDBUJPO)BOEMFS XIUUQ3FTQPOTF8SJUFS S IUUQ3FRVFTU \ BDDFQUTPOMZ1045NFUIPE NFUIPE$IFDL

     SFBESFRVFTUCPEZ SCPEZ @JPVUJM3FBE"MM S#PEZ  QBSTFSFRVFTUCPEZ WBSSFR(BVSVO3FRVFTU(BVSVO @KTPO6ONBSTIBM SCPEZ SFR(BVSVO   FORVFVFOPUJpDBUJPOBTZODISPOPVTMZ HPFORVFVF/PUJpDBUJPOT SFR(BVSVO/PUJpDBUJPOT  SFUVSOUIFSFTQPOTF TFOE3FQPOTF X lPLz IUUQ4UBUVT0,  ^
  9. Why workers with goroutine and queue with channel are static?

    w 6OMJNJUFEHPSPVUJOFT w 1FSGPSNBODFTMPXTEPXO w #FDBVTFQVTIJTTMPX w DIBOOFMJTSFRVJSFEGPSLFFQJOHXPSLFSTXBJUJOH w (P`TDIBOOFMTJ[FJTOPUVOMJNJUFE
  10. POST /push "DDFQUTCVMLFEQVTISFRVFTUXJUI+40/ \ lOPUJpDBUJPOz< \ lUPLFOTz<lYYYz>  lQMBUGPSNz 

    lNFTTBHFzl)FMMP J04z  lCBEHFz  lTPVOEzlEFGBVMUz  lFYQJSZz ^  \ lUPLFOTz<lZZZz>  lQMBUGPSNz  lNFTTBHFzl)FMMP "OESPJEz  lDPMMBQTF@LFZzlVQEBUFz  lEFMBZ@XIJMF@JEMFzUSVF  lUJNF@UP@MJWFz ^ > ^
  11. GET /stat/go DVSMTIUUQTUBUHP \ lUJNFz  lHP@WFSTJPOzlHPz  lHP@PTzlMJOVYz 

    lHP@BSDIzlBNEz  lDQV@OVNz  lHPSPVUJOF@OVNz  lHPNBYQSPDTz  lDHP@DBMM@OVNz  lNFNPSZ@BMMPDz  lNFNPSZ@UPUBM@BMMPDz  lNFNPSZ@TZTz  lNFNPSZ@MPPLVQTz  lNFNPSZ@NBMMPDTz  lNFNPSZ@GSFFTz  ɾ ɾ ɾ 3FUVSOTBTUBUJDUJDTGPS(PSVOUJNF
  12. GET /stat/app DVSMTIUUQTUBUBQQ \ lRVFVF@NBYz  lRVFVF@VTBHFz  lJPTz\ lQVTI@TVDDFTTz

     lQVTI@FSSPSz ^  lBOESPJEz\ lQVTI@TVDDFTTz  lQVTI@FSSPSz ^ ^  3FUVSOTBTUBUJDUJDTGPS(BVSVO
  13. Gaurun Configuration (TOML) <DPSF> QPSUlz XPSLFST RVFVFT <BOESPJE> BQJLFZlʜz <JPT>

    QFN@DFSU@QBUIlQBUIDFSUQFNz FN@LFZ@QBUIlQFNLFZQFNz TBOECPYGBMTF UJNFPVU@FSSPS
  14. Optimization w DPSFXPSLFST w OVNCFSPGXPSLFSTGPSQVTI w DPSFRVFVFT w TJ[FPGDIBOOFMGPSQVTIXPSLFST w

    JPTUJNFPVU@FSSPS w UJNFPVUGPSXBJUJOHFSSPSGSPN"1/T w EFGBVMUDPOpHVSBUJPOJTDPTFSWBUJWF
  15. Monitoring server written in Go w .FNPSZVTBHFBOEBMMPDBUJPOT w ($DPOEJUJPO w

    OVNCFSPGHPSPVUJOFT w DIBOOFMVTBHF w OVNCFSPGDPOOFDUJPOT SFRVFTUTTFD FUDʜ
  16. The case of Gaurun w (&5TUBUHP w .FNPSZVTBHFBOEBMMPDBUJPOT w ($DPOEJUJPO

    w OVNCFSPGHPSPVUJOFT w (&5TUBUBQQ w DIBOOFMVTBHF w OHY@IUUQ@TUVC@TUBUVT@NPEVMF w OVNCFSPGDPOOFDUJPOT SFRVFTUTTFD FUDʜ