IT infrastructure just gained a new friend: DPortAck
In the project i’m working now, the architecture of the application became really big along the way.
- Around 10 ASP.NET MVC applications that represent the presentation layer of the arquitecture.
- Around 15 WCF BackEnd applications that exposes the business logic on a SOA Architecture.
- Around a dozen of Windows Services spread across layer that supports the application as a whole.
- 10 Databases on the persistence layer.
When we got the machine layout for the production environment we saw:
- Every layer is physically separated
- There are firewalls between the machines
- There are a cluster and a load-balancer on the presentation and on the business layer
Before deploying the applications we wanted to make sure that the machines had all the needed connectivity between them, since we are hiring a Service Provider to host this infrastructure. We don’t control the infrastructure, so we need to rely on their technical support to fix issues with the firewall, network access, machine configuration, etc.
How someone normally test port connectivity between machines? There are a number of ways and all of them normally have the same drawback: They required MANUAL work. TelNet, Port Testers, etc, all requires some manual, tedious process that can easily be forgotten or wrongly executed. I’m a big fan of automation, but the existing solutions out there usually require a lot of installs, agents, configuration, etc.
DPortAck does exactly what we need easily and automatically. And does not even need to be installed. You simply write a simple XML file with the tests you want to make, supply its path as an argument for the DPortAck command line, and thats it, sit and relax (or do something else while executing). DPortAck its implemented with C# and .NET 2.0. So the .NET FX 2.0 its required.
Here is a sample XML file:
<?xml version="1.0" encoding="utf-8" ?> <Tests xmlns="http://dportack.codeplex.com/"> <Test name="Sample Test"> <Machines> <Machine host="127.0.0.1"> <Ports> <Port number="80"/> <Port number="8080"/> <Port number="8081"/> <Port number="123"/> <Port number="8080" protocol="Udp" socketType="Dgram"/> </Ports> </Machine> </Machines> </Test> </Tests>
Executing this test gave the following output:
Sample Test (MaxTimeout: 5000) – 127.0.0.1 – Tcp.80… ok
Sample Test (MaxTimeout: 5000) – 127.0.0.1 – Tcp.8080… ##### FAIL #####
Sample Test (MaxTimeout: 5000) – 127.0.0.1 – Tcp.8081… ##### FAIL #####
Sample Test (MaxTimeout: 5000) – 127.0.0.1 – Tcp.123… ##### FAIL #####
Sample Test (MaxTimeout: 5000) – 127.0.0.1 – Udp.8080… ok
We just integrated the execution of the Production environment on our build server, and now we receive notifications when something does not work :D, since when a test throws an Error DPortAck sends an exit code of 1.