High-Level Application Architecture Question
Posted
by
Jesse Bunch
on Programmers
See other posts from Programmers
or by Jesse Bunch
Published on 2012-08-31T00:41:34Z
Indexed on
2012/08/31
3:49 UTC
Read the original article
Hit count: 432
So I'm really wanting to improve how I architect the software I code. I want to focus on maintainability and clean code. As you might guess, I've been reading a lot of resources on this topic and all it's doing is making it harder for me to settle on an architecture because I can never tell if my design is the one that the more experienced programmer would've chosen.
So I have these requirements:
- I should connect to one vendor and download form submissions from their API. We'll call them the
CompanyA
. - I should then map those submissions to a schema fit for submitting to another vendor for integration with the email service provider. We'll call them the
CompanyB
. - I should then submit those responses to the ESP (
CompanyB
) and then instruct the ESP to send that submitter an email.
So basically, I'm copying data from one web service to another and then performing an action at the latter web service.
I've identified a couple high-level services:
The service that downloads data from
CompanyA
. I called this theCompanyAIntegrator
.The service that submits the data to
CompanyB
. I called thisCompanyBIntegrator
.
So my questions are these:
Is this a good design? I've tried to separate the concerns and am planning to use the facade pattern to make the integrators interchangeable if the vendors change in the future.
Are my naming conventions accurate and meaningful to you (who knows nothing specific of the project)?
Now that I have these services, where should I do the work of taking output from the
CompanyAIntegrator
and getting it in the format for input to theCompanyBIntegrator
? Is this OK to be done inmain()
?Do you have any general pointers on how you'd code something like this? I imagine this scenario is common to us engineers---especially those working in agencies.
Thanks for any help you can give. Learning how to architect well is really mind-cluttering.
© Programmers or respective owner