This Warewolf Review was originally published on LinkedIn by Robin Perdomo.
This document contains a general review of Warewolf software. I put myself in the place of someone trying to choose an integration tool, and took into account many different aspects that I have found important based on my experiences as an independent consultant.
The documentation is not clear about what is going on under the hood, especially on the server side and deployment. After some digging this link gives an idea:
I finally understood that Warewolf has its own app server service. I’m still confused about the deployment process, Warewolf makes it really simple, but I consider it important to have a clear idea of what is going on behind the scenes even if it is automated.
How can I deploy it into production and how much would it cost?
I don’t have any clients using MS Azure, but I took a look anyway and found this:
So, excluding the most basic (dev option), the entry point for a company would be $120 a month (A1 general purpose instance).
Looking at AWS there is no default install, but Windows instances are more expensive on Amazon than its Azure equivalent, on top of that you should bring your own license, so for a company that doesn’t use Azure or owns infrastructure, becomes expensive to hosts.
Finally, looking at Warewolf pricing page, there are 3 distinct ways to get Warewolf:
- For free, compile it yourself from GitHub
- Free trial, download the desktop version on a Windows machine
- Pre-installed on a virtual machine from Azure
If you go with option 3 all the pricing is handled in Azure and it is dependent on how many cores your VM has and your usage (Azure charge).
If you use option 2, after your free trial, you are required to license your Warewolf based on cores again. You can choose from two levels, or even combine them if you are running a business.
Warewolf vs alternatives
I have some experience building microservices on top of node.js and Lumen (Laravel) but Warewolf is in a different league so they are not really direct competitors.
AWS Lambda and MS Service Fabric would be the actual alternatives for a company looking for the integration level found on Warewolf, especially if the company is using Azure/Amazon already.
Without doing a side by side comparison between the 3 options (that would require a deep knowledge of the 3) it is easy to realize that depending on the particular cloud platform, specific feature integration would be the strong points for both Lambda and Fabric, while when it comes to usability and development speed, Warewolf has no contest.
I tried to figure out what would be the target market, what kind companies or development teams would benefit the most from using Warewolf instead of traditional tools.
The video about “Introduction for Software Architects” https://warewolf.io/knowledge-base/introduction-software-architect is really interesting and includes some pretty strong points about the advantages of Warewolf because the “no coding” approach is a strong point, but I think avoiding/minimizing the loss of intellectual property is probably the biggest advantage. Having a graphical representation of the business process that is actually implemented inside the application is really deal making and something that many people in the industry would love for sure.
So I think there would be 2 main kinds of companies that would really love Warewolf:
- Companies doing in-house software development: Warewolf would really make it easy to take requirements from the business people down to the development team without losing track of what is going on in the middle.
- Front end web/mobile designers: Front end developers are not good at architecture, I see it all the time, I have been hired in order to fix the mess done in the back end that was coded by a web designer. But many web development companies just don’t have the money for hiring a back end developer (at least here in my country) so Warewolf would allow a designer to build a decent back end without having to actually learn how to code.
Getting Hands Dirty
My first impression was pretty good, the UI is intuitive and simple. One can jump straight into the Explorer box and start messing with the Examples library, it includes well commented samples for almost all tools making it a valuable learning resource.
There is nothing hidden, no complicated navigation, all options are one click away, so pretty much all Warewolf powers are right in front of you:
After running many of the examples I felt pretty familiar with the tool, but wanted to try the documentation. I always go with step by step tutorials first (trying to get the big picture) before getting deeper into a specific feature. There is a nice collection of video-tutorials on the Warewolf site https://warewolf.io/knowledge-base/categories/video-tutorials/ but Warewolf User Guide 1 and 2 are probably the first documents one should study as a beginner.
Guide 1 is the introduction tutorial, if you missed something by exploring the UI by yourself you will find it there. It doesn’t take more than 10 min to complete it step by step, but after you read it, you are pretty much done and will never need it again. My only complaint about Guide 1 is that it asks you to install MS SQL Server in order to follow the guide but you don’t actually need it until Guide2.
Guide 2 is the actual reference document, with the same “hands-on” style used in Guide 1, it describes most Warewolf features in detail, short text and lots of images, it is pretty much all that one needs in order to build microservices.
After reviewing it I felt confident to try my own experiment, the idea was simple, a web service exposing data coming from online transactions, while a local contains local transactions information. I wanted to use Warewolf in order to merge both sources into a single one.
The first step was pretty straightforward, tools for connecting to a remote web services are easy to use, it is actually a complete REST client, it also maps the result automatically into a Recordset, so after a couple of clicks, I was able to connect and retrieve the result from a web service:
The second step was connecting to a local database, connection itself was simple, I would like more detailed error messages, but overall, no issues with it. It was disappointing to find out that Warewolf is not able to execute plain SQL queries, so there should be a store procedure on the database side if you want to communicate with the database (that can be a huge problem in many cases when DB access is restricted). So after adding a store procedure to the DB I was able to get the data, the task was simple anyway and the same automatic Recordset generation happened.
Now the fun part, I had 2 Recordsets and needed to merge them into a single one, I tried to use the “Data Merge” expecting it to be some kind of mapping tool for Recordsets but unfortunately that is not the case (its description is really confusing compared with what it actually does) and it is only useful when you need a plain text output. So I ended up using the assign tool instead, it would be nice if Warewolf included an actual merge tool.
After reading documentation and figuring out how to work with Recordsets I completed my “merge data” microservice. Cool.
Despite its easy learning curve, there are many usability aspects to improve. Warewolf Studio feels laggy, switching from different views in the work surface takes some seconds to respond, same if you reopen a microservice, close it or just try to expand a particular block.
The room for the debugging output on the default layout is too small, so one has to re-arrange it in order to see the full line info.
The work surface gets crowded pretty quickly, that is normal in almost all work flow graphical editors, but the zoom tools are not easy to use and things get ugly when you are forced to expand a connector, there is simply not enough room for working in a comfortable way so one has to drag and reorganize everything just to get access to that text box when one wants to type some parameter.
An alternative editor on the side would be nicer, many IDEs work in the way. Some aspects need to be improved in order to make it suitable for a large scale projects. It is hard to accommodate new blocks as the diagram grows, especially when there is no other way to configure.
Warewolf is a good alternative to writing web microservices by hand. A similar service took me about 3 hours to code, I wasn’t 100% productive while implementing it with Warewolf, but I would say that it would take me 30 to 45 min now that I’m familiar with the tool. Compared to coding, it speeds up the implementation between 4 and 6 times faster. Its learning curve is small and one can get something up and running in no time.