SOA style architecture in ColdFusion?

The back-end of the company’s internal systems is becoming more and more complex. I want to explore the idea of ​​an SOA-style architecture instead of a heavy monolithic system. Where should I start?

I am new to SOA. This refers to individual CF instances, they communicate with each other through remote web service calls? How to deal with things like error handling and server outages? If every part of the ESB is in ColdFusion, will the ESB be beneficial to the architecture?

How about the DB layer? Should they share a huge database, or should they store it in their own way?

Thank you

First, what do you want to accomplish? SOA is very useful for systems that need to be changed relatively easily and accessible to new programmers. On the other hand, you tend to make performance trade-offs because you end up isolating persistence-so its interaction occurs on the application server instead of the database Normally this performance trade-off is a non-issue, but if you are developing a high-throughput transaction system, you may need to compromise by putting some algorithms in the database and making these algorithms violate your service segmentation.

So, if you want professionals rather than paying special attention to shortcomings, then first read some applicable books on this topic:

> Martin Fowler’s Patterns of Enterprise Application Architecture – Pay special attention to the Service Layer mode
> Domain Driven Design Quickly. Many (unnecessarily IMO) abbreviated versions of the books of the same name minus “fast”, which helps you think about how to define the service and the object hierarchy below each.
> /p>

You want the trend to be a design with high-level service objects, and the relationship is managed by dependency injection to the service locator container. In the ColdFusion case, ColdSpring is an example. Then allow object mocking so you can easily do it Unit testing. For example, if the service exists on other servers, then service objects that have proxies locally will be passed as dependencies. For testing, these proxies are mocked, so they don’t have to communicate with the remote server.

About Error handling and server outages. I assume that you are mainly concerned with dealing with issues outside the control of the local server. This is another reason for using the service proxy object. Let this object handle timeouts, incorrect response values, etc. – actually an anti-corruption layer .

As for database sharing, I will build my table relationship to reflect my service object relationship. Therefore, if the table in question has data related only through the service, I will not enforce any external Key constraints. So although they may be in the same database, it doesn’t matter. This allows you to move these services and database tables to other locations with relatively few changes to the code.

The back end of the company’s internal system is becoming more and more complex. I want to explore the idea of ​​SOA style architecture instead of a heavy monolithic system. Where should I start?

I am new to SOA. This refers to individual CF instances, they communicate with each other through remote web service calls? How to deal with things like error handling and server outages? If every part of the ESB is in ColdFusion, will the ESB be beneficial to the architecture?

How about the DB layer? Should they share a huge database, or should they store it in their own way?

Thank you

First of all, what do you want to accomplish? SOA is very useful for systems that need to be changed relatively easily and accessible to new programmers. On the other hand, you tend to make performance trade-offs because you end up isolating persistence-so its interaction occurs on the application server instead of the database Normally this performance trade-off is a non-issue, but if you are developing a high-throughput transaction system, you may need to compromise by putting some algorithms in the database and making these algorithms violate your service segmentation.

So, if you want professionals rather than paying special attention to shortcomings, then first read some applicable books on this topic:

> Martin Fowler’s Patterns of Enterprise Application Architecture – Pay special attention to the Service Layer mode
> Domain Driven Design Quickly. Many (unnecessarily IMO) abbreviated versions of the books of the same name minus “fast”, which helps you think about how to define the service and the object hierarchy below each.
> /p>

You want the trend to be a design with high-level service objects, and the relationship is managed by dependency injection to the service locator container. In the ColdFusion case, ColdSpring is an example. Then allow object mocking so you can easily do it Unit testing. For example, if the service exists on other servers, then service objects that have proxies locally will be passed as dependencies. For testing, these proxies are mocked, so they don’t have to communicate with the remote server.

About Error handling and server outages. I assume that you are mainly concerned with dealing with issues outside the control of the local server. This is another reason for using the service proxy object. Let this object handle timeouts, incorrect response values, etc. – actually an anti-corruption layer .

As for database sharing, I will build my table relationship to reflect my service object relationship. Therefore, if the table in question has data related only through the service, I will not enforce any external Key constraints. So although they may be in the same database, it doesn’t matter. This allows you to move these services and database tables to other locations with relatively few changes to the code.

Leave a Comment

Your email address will not be published.