This is in continuation of my FIX protocol tutorial, i am just sharing some of thoughts which are important to remember while writing FIX engine for FIX protocol , though there are couple of professional third party FIX engines are available you may need to write your own if your firm requires.
While writing your own FIX engine I would suggest paying attention to certain points which could save lots of time during maintenance phase
1) Decide up to which FIX version you are going to support e.g. FIX 4.0, 4.2, 4.4. As most of clients still use FIX 4.2 but supporting up to 4.4 would be good choice.
2) Think about support tools required to check status of various FIX sessions, changing sequence no etc. JMX would have been good choice if you were using Java but similar solution can be possible with other language.
3) Often you will be required to create new FIX session without bouncing your FIX engine to accommodate new clients; FIX engine must be capable to do that.
4) Different clients connect from different time zones, they have different requirement in terms of connection timing, EOD timing etc. these settings should be easy to configure and maintain.
5) Custom tags support; you may be required to support custom tag for your internal application or any other purpose. Program these things in a way that you need not have to make any code change or release to add another tag.
While these are just some of highlighter I would suggest looking some of the commercial FIX engine available in market e.g. Cameron FIX engine, NYFIX Appia to how they work.
Once again Flexibility, maintainability, easy to support are some of the feature which is essential for any FIX engine.
FIX Protocol Tutorial 4: Repeating groups in FIX
FIX Protocol Tutorial 5: Replaying messages in FIX protocol
FIX Protocol tutorial 6: Difference between Session Level and Business message Reject
FIX Protocol Tutorial 7: Difference between FIX 4.2 vs FIX 4.4
FIX Protocol Tutorial 8: Writing your own FIX Engine
FIX Protocol Tutorial 9: Common issues on financial information exchange (FIX) Connectivity