making programs talk

24
MAKING PROGRAMS TALK MICHAEL F. COLLINS, III DESERT CODE CAMP OCTOBER 18, 2014

Upload: michael-collins

Post on 22-Jun-2015

502 views

Category:

Software


1 download

DESCRIPTION

Slides for my Desert Code Camp presentation on inter-program communication.

TRANSCRIPT

Page 1: Making Programs Talk

MAKING PROGRAMS TALKMICHAEL F. COLLINS, III

DESERT CODE CAMPOCTOBER 18, 2014

Page 2: Making Programs Talk

ABOUT ME

• PRODUCT ARCHITECT/LEAD DEVELOPER FOR NEURON ESB, A MESSAGING MIDDLEWARE PRODUCT

• 20+ YEAR CAREER (1994-2014)

• STUDIED COMPUTER ENGINEERING AT CSU SACRAMENTO (GO HORNETS!)

• CURRENTLY WORK FOR NEUDESIC (6+ YEARS); PRIOR EMPLOYERS INCLUDE SOGETI USA, JDA SOFTWARE, KAISER IT, NONSTOP SOLUTIONS, PEOPLESOFT, AND OTHERS

• DEVELOP FOR WINDOWS, LINUX, MAC OSX, IOS, ANDROID, AND OTHER PLATFORMS

• FAVORITE LANGUAGES: C#, C++, JAVA, RUBY, PYTHON, GO, ERLANG

Page 3: Making Programs Talk

CONTACT ME

• EMAIL:

[email protected]

[email protected]

• TWITTER: @MFCOLLINS3

• SKYPE: MFCOLLINS3

• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/

Page 4: Making Programs Talk

WHY ARE WE HERE?

• HOW DO TWO OR MORE PROGRAMS TALK?

• HOW CAN PROGRAMS COLLABORATE TO GET WORK DONE?

• WHAT STRATEGIES EXIST FOR PROGRAM COLLABORATION?

• WHAT ARE THE PITFALLS OF MULTI-PROGRAM DEVELOPMENT?

Page 5: Making Programs Talk

PARENT-CHILD PROCESSES

• PARENT PROCESS “SPAWNS” A CHILD PROCESS

• “STANDARD I/O STREAMS” ARE USED TO CONTROL AND COLLECT FEEDBACK:

• 1 INPUT STREAM (STDIN)

• 2 OUTPUT STREAMS (STDOUT, STDERR)

Parent

Child

Page 6: Making Programs Talk

PARENT-CHILD PROCESSES

• PARENT SENDS A COMMAND TO THE CHILD USING STDIN

• CHILD SENDS A RESPONSE BACK TO THE PARENT USING STDOUT

• CHILD CAN OUTPUT DIAGNOSTIC INFORMATION (LOG DATA; DEBUG MESSAGES) USING STDERR

Parent

Child

Page 7: Making Programs Talk

PARENT-CHILD PROCESSES

• SINGLE RESPONSIBILITY PRINCIPAL

• A PROGRAM SHOULD HAVE ONE REASON TO CHANGE

• DO ONE THING AND DO IT WELL

• GUI FOR COMMAND-LINE INTERFACE (CLI)

• PRESENT A GUI OVER POWERSHELL SCRIPTS OR COMMAND-LINE PROGRAMS

• USE A TEXT PROTOCOL

• EASY TO DEBUG FROM THE COMMAND LINE

• CAN BE SCRIPTED OR AUTOMATED FOR TESTING

Page 8: Making Programs Talk

DEMOPARENT-CHILD PROCESSES

Page 9: Making Programs Talk

DISTRIBUTED PROCESSES

Client Server

Page 10: Making Programs Talk

DISTRIBUTED PROCESSES

• SOAP

• REST/HTTP

• PROTOCOL BUFFERS

• APACHE THRIFT

• SOCKETS

Client Server

Page 11: Making Programs Talk

DISTRIBUTED PROCESS PROTOCOLS

SOAPXML-BASED PROTOCOL

PROVEN TECHNOLOGY

GREAT .NET SUPPORT (WCF)

STANDARDS FOR SECURITY, RELIABILITY, DISCOVERY,

METADATA

LIMITED SUPPORT FOR OTHER PLATFORMS/LANGUAGES

RESTHTTP-BASED

LOW BARRIER TO ENTRY

HIGHLY PORTABLE BETWEEN PLATFORMS AND LANGUAGES

MOST LANGUAGES HAVE BASIC HTTP SUPPORT

STABLE SECURITY STANDARDS (HTTPS, OAUTH)

THRIFTHIGHLY PORTABLE BETWEEN

PLATFORMS AND LANGUAGES

STANDARD FOR METADATA

API-BASED

SECURITY THROUGH SSL

Page 12: Making Programs Talk

DISTRIBUTED PROCESSES

• USE THE BEST PROTOCOL FOR YOUR PROJECT

• DO YOU NEED ADVANCED SECURITY, DISCOVERABILITY, DISTRIBUTED TRANSACTIONS, RELIABILITY, AND YOU’RE ON .NET ONLY?

• USE WCF AND SOAP

• DO YOU NEED PORTABILITY AND THE ABILITY FOR MULTIPLE TECHNOLOGIES TO INTEGRATE?

• USE REST OR THRIFT

• ARE YOU EXPOSING A PUBLIC API OVER THE INTERNET?

• USE REST

• ARE YOUR SERVICES FOR AN INTERNAL INTERNET?

• USE THRIFT

Page 13: Making Programs Talk

DEMODISTRIBUTED PROCESSES

Page 14: Making Programs Talk

ASYNCHRONOUS MESSAGING

Broker

Participant

Participant

Participant

Page 15: Making Programs Talk

ASYNCHRONOUS MESSAGING

• COMMUNICATION IS HANDLED VIA ONE-WAY MESSAGES SENT BETWEEN PARTICIPANTS

• A BROKER PROVIDES SERVICES SUCH AS A MESSAGE QUEUE OR PUBLISH-SUBSCRIBE ARCHITECTURE TO DELIVER MESSAGES TO RECEIVERS

Broker

Participant

Participant

Participant

Page 16: Making Programs Talk

ASYNCHRONOUS MESSAGING

• POINT-TO-POINT: DELIVERED AT MOST ONCE

• PUBLISH-SUBSCRIBE: DELIVERED TO ALL SUBSCRIBERS

Broker

Participant

Participant

Participant

Page 17: Making Programs Talk

ASYNCHRONOUS MESSAGING

• MESSAGES MAY BE PERSISTED BEFORE BEING DELIVERED

• SOME MESSAGES CAN BE PROCESSED IN A TRANSACTION

• RELIABLE MESSAGING IF A PARTICIPANT IS UNAVAILABLE

Broker

Participant

Participant

Participant

Page 18: Making Programs Talk

ASYNCHRONOUS MESSAGING

• POISON MESSAGE QUEUE: MESSAGES THAT CAUSE FAILURES

• DEAD LETTER QUEUE: MESSAGES THAT EXPIRE BEFORE BEING DELIVERED

• RELIABLE == NO MESSAGE LOSS!

• GUARANTEED == MESSAGE WILL BE DELIVERED, OR YOU WILL KNOW THAT IT WAS NOT DELIVERED

Broker

Participant

Participant

Participant

Page 19: Making Programs Talk

ASYNCHRONOUS MESSAGING

• MSMQ

• MQ SERIES

• ACTIVE MQ

• RABBIT MQ

• ZEROMQ

Broker

Participant

Participant

Participant

Page 20: Making Programs Talk

ASYNCHRONOUS MESSAGING

• PATIENCE IS YOUR FRIEND

• TEST, TEST, TEST

• CAPTURE POISON MESSAGES AND DEAD LETTER MESSAGES

• ANYTHING YOU DO SLOWS YOUR SYSTEM DOWN

• PERSISTENCE

• TRANSACTIONS

• GUARANTEED DELIVERY

• MAXIMIZE I/O

Page 21: Making Programs Talk

DEMOASYNCHRONOUS MESSAGING

Page 22: Making Programs Talk

Q&AASK ME ANYTHING!

Page 23: Making Programs Talk

NEUDESIC IS HIRING!

• ARE YOU ONE OF THE BEST SOFTWARE DEVELOPERS IN THE DESERT? IF YES, WHAT ARE YOU WAITING FOR?

• NEUDESIC HIRES THE BEST-OF-THE-BEST AND IS LOOKING FOR TALENTED SOFTWARE DEVELOPERS, UX DESIGNERS, BI DEVELOPERS, QA ENGINEERS, AND PROJECT MANAGERS!

• PHOENIX IS ONE OF THE BEST LOCATIONS TO WORK IN!

• JOIN A GROWING COMPANY AND MAKE IT MORE SUCCESSFUL!!!

• EMAIL ME YOUR RESUME TODAY: [email protected]

Page 24: Making Programs Talk

CONTACT ME (AGAIN)

• EMAIL:

[email protected]

[email protected]

• TWITTER: @MFCOLLINS3

• SKYPE: MFCOLLINS3

• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/