Making Programs Talk
-
Upload
michael-collins -
Category
Software
-
view
503 -
download
1
description
Transcript of Making Programs Talk
MAKING PROGRAMS TALKMICHAEL F. COLLINS, III
DESERT CODE CAMPOCTOBER 18, 2014
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
CONTACT ME
• EMAIL:
• TWITTER: @MFCOLLINS3
• SKYPE: MFCOLLINS3
• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/
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?
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
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
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
DEMOPARENT-CHILD PROCESSES
DISTRIBUTED PROCESSES
Client Server
DISTRIBUTED PROCESSES
• SOAP
• REST/HTTP
• PROTOCOL BUFFERS
• APACHE THRIFT
• SOCKETS
Client Server
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
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
DEMODISTRIBUTED PROCESSES
ASYNCHRONOUS MESSAGING
Broker
Participant
Participant
Participant
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
ASYNCHRONOUS MESSAGING
• POINT-TO-POINT: DELIVERED AT MOST ONCE
• PUBLISH-SUBSCRIBE: DELIVERED TO ALL SUBSCRIBERS
Broker
Participant
Participant
Participant
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
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
ASYNCHRONOUS MESSAGING
• MSMQ
• MQ SERIES
• ACTIVE MQ
• RABBIT MQ
• ZEROMQ
Broker
Participant
Participant
Participant
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
DEMOASYNCHRONOUS MESSAGING
Q&AASK ME ANYTHING!
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]
CONTACT ME (AGAIN)
• EMAIL:
• TWITTER: @MFCOLLINS3
• SKYPE: MFCOLLINS3
• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/