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
- 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
- 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 the
The service that submits the data to
CompanyB. I called this
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
CompanyAIntegratorand getting it in the format for input to the
CompanyBIntegrator? Is this OK to be done in
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.