this post was submitted on 26 Feb 2024
15 points (100.0% liked)

Learn Programming

1625 readers
1 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

I want to learn how to build integrations, such as how to connect two systems made by different companies that have different structures.

For example: To cut down on redundant data entry, I want to build an integration where the data is pushed from one software to another software. The integration would put the data from the source software into the correct fields in the destination software.

How do I go about learning how to build integrations? What classes to even start with?

I appreciate any guidance you can provide.

Edit: Thanks a bunch for the suggestions. I'm checking out those tools suggested in the comments and looking up classes to learn the skills needed.

top 8 comments
sorted by: hot top controversial new old
[–] [email protected] 4 points 7 months ago* (last edited 7 months ago) (1 children)

Look into restful api’s. Every software provider that allows integration with another software product will provide an api for other software to communicate in defined ways.

For bonus credit, look into graphql. It’s a type of api that allows the calling software to define exactly what data they want in the response.

If you’re controlling both softwares (I.e. they’re two “internal” programs), look into RabbitMQ. It’s a messaging software that allows messages (data) to be passed between two distinct programs in a normalised fashion.

Disclaimer: this is all off the top of my head early on a Monday morning. Excuse any mistakes.

[–] [email protected] 2 points 7 months ago

Thanks for the suggestions. It sounds like learning all about REST is a good place to start.

Some of the integration situations I might face is where one software is internal on-prem but the other software is more cloud-based and debatable on how much control we have on our stuff in it.

[–] [email protected] 4 points 7 months ago* (last edited 7 months ago) (1 children)

I'd say that heavily depends on Software A and B.

If you want to actively push data from system A, you need to check for system-specific enhancement options for that system. E.g. is there a way foreseen to add custom plugins, call webhooks, etc.

If you want to actively want to pull data from system B instead, you have to do the same exercise as before but for the other system.

Such interfaces (if available at all) are often vendor specific, so one software may use Java for addons, another only Python etc.

In more complex integration scenarios, you often work with a so-called middleware that acts as a translator between different data formats, protocols etc. Such middleware software often already has pre-built triggers or prepared integration routines for very common software. A commercial example that is mostly meant for end users would be Microsoft Power Flow or if you are looking for FOSS you can check out Node Red.

I don't think there is a lot of 'integration knowledge' that is generally applicable independent of the software in use. If you want to start building a toolbox of skills, you could start looking at SOAP, REST, XML, maybe learn a scripting language such as Python etc.

[–] [email protected] 1 points 7 months ago (1 children)

Thanks a bunch for the suggestions. I think learning the basic toolbox is where I should start, then work my way up to the software-specific interfaces.

Have you ran into software made by companies that didn't have APIs available or didn't want their software integrating with other systems? How would you work around that?

[–] [email protected] 1 points 7 months ago

For web applications you can often reverse engineer the internal / non-documented APIs using the development tools of your browser or network traffic analysis such as Wireshark. As a last resort for software without APIs you can always use robotics tools and automatically use the GUI as a user would do. You could for example check out the Selenium framework for Java.

[–] [email protected] 1 points 7 months ago
[–] silas 1 points 7 months ago (1 children)

I know this community is for programming, but you could use a tool like n8n as a shortcut to connect services. It’s more of a drag-and-drop node grid similar to Zapier, but it’s open-source and self-hostable. You can schedule tasks to run at a certain time, code your own integrations, or install plugins that other people have made

[–] LinearArray 1 points 7 months ago

This is a pretty no-code approach, it's the way you want to go when you don't want to write code or build anything by yourself.