Would you say the three-tier enterprise architecture has lived past its expiration date? If not, why not? If so, what is replacing it?
I'm in charge of Paylocity's core architecture team. We're trying to figure out new technologies and how to integrate them to help our products perform and scale. On the one hand, there are still advantages in the three-tier or end-tier architecture. It still works very well for certain cases, so I don't necessarily think it has to go away.
The reality, however, is that when you get into complex systems, having a Web service tier is a must. Whether that's considered part of a three-tier system or not is essential. Your architecture has to support different types of devices, whether you have a desktop that's connected on your Internet or an iPad or a mobile device that's trying to connect over the Internet.
Many businesses, including ours, have hundreds of integrations with partners for things like 401k files, benefits, being able to send payments to insurance companies and so on. We need to be able to support integrating data and applications and more with different companies. So, although most of those partners like FTP (File Transfer Protocol), we want to expose everything as Web service. That's more ubiquitous and effective. That Web service focus has led us to building a much more robust SOA (service-oriented architecture) framework end, too.
When you get into complex systems, having a Web service tier is a must.
Evolving enterprise design
Web services are key, and, as I said, the enterprise architecture has to support it. Within that frame of thought, the model-view-controller (MVC) pattern is to me more important than saying, "I'm three tiered." We really want the separation of concerns, so each is testable and easier to manage. With this, the separate disciplines are broken out, so if you have a large team, you can have specialization. Or, if you have a small team, members can still manage everything themselves.
For me, everything revolves more around going with MVC and Web services, and that's what I emphasize more than three-tiered architectures today.
Paylocity started out 10 years ago at .NET 1.1, and it didn't really support enterprise design patterns like MVC. It worked on the patterns of the practice book that Microsoft put out, which recommended the Front Controller page controller. We went with the Microsoft standard three-tier architecture at the time.
More on enterprise design
Focus on user experience for effective design
Using design patterns to simplify development
Knowing goals helps with app design
Back in 2005, I was out in Redmond on Microsoft's customer advisory board of the Patterns and Practice Group. While there, I made the argument that if Microsoft wanted to cover Java developers, MVC was needed. That came along from Microsoft three years later, and we have been using MVC primarily since then.
Adding the Kendo User Interface
About the author:
Chuck Cooper is certified by (ISC)2 as a Certified Information Security Professional (CISSP) and volunteers as a Secure Development Advisor, Technical Project Advisor Group, for the Open Web Application Security Project (OWASP). His experience includes stints as enterprise architect at Washington Mutual and software engineer on Borland Paradox and Great Plains' Property Management. Currently, he is chief information security officer and enterprise architecture vice president for Paylocity Corp., a provider of cloud-based payroll and human capital management software headquartered in Arlington Heights, Ill.
Editor's note: This expert advice is taken from an interview by executive editor Jan Stafford.
This was first published in February 2014