DevOps Zone is brought to you in partnership with:

I am a software architect passionate about software integration, high scalability and concurrency challenges. Vlad is a DZone MVB and is not an employee of DZone and has posted 73 posts at DZone. You can read more from them at their website. View Full User Profile

Open-minded Architect

  • submit to reddit

While chit chatting with one of my colleagues, I was surprised to hear they use a PHP team for developing their front-end application, while the back-end services are implemented using Java. Since their project is doing great, this really got my thinking why I haven't ever considered such an architecture.

Most large Java web application I've been involved with have shone on the server-side, while the client-side has been the Achilles heel.

While you can find great Java web developers, not every Java developer has web-based skills. But PHP developers are great when it comes to web programming, and they don't have a zillion of frameworks to specialize in. PHP developing is pretty much standard, as opposed to Java web programming. I have always been anxious when joining a project using a new web framework I didn't know anything about, but that's not the case for a PHP developer. They can always join a new project, and the learning curve is not that steep.

I remember reading many comparisons tests for Java vs PHP or Python, and I don't remember seeing a single test  not aiming to pick-up a winner. Such test targets only the language, but disregards the community and especially its developers.

Sometimes the winning solution is not a single technology but a clever mix of those that are best suited withing a given context. A similar concept is the polyglot persistence.

So as an architect you always have to stay open-minded, and be objective of any technology you happen to love. After all, I love Java, but I also know it's not always the best solution to all my clients' problems.

Published at DZone with permission of Vlad Mihalcea, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Nicolas Frankel replied on Mon, 2013/11/04 - 4:33am

As for every integration project, by mixing technologies (whatever they are, I'm not particularly interested in Java vs PHP), you have to focus on communication between the two teams or run the risk of integration mismatch. In all cases, you'll also need very good project management skills to synchronize feature releases between the two teams.

I wouldn't recommend having two teams if you can avoid it. Of course, I realize it's not always possible.

Vlad Mihalcea replied on Mon, 2013/11/04 - 7:58am in response to: Nicolas Frankel

I agree with you, that's why I haven't even considered it before. I haven't been involved in the development of this project but I know they are using web services to communicate between systems. As long as they don't change the WSDL they can deploy independently, and they can work with different velocities. You can have features ready on the back-end side, just waiting for being integrated in the front-end side. This complicates the features’ management; it doubles the management effort, as you need to maintain two back-logs for each team. Because there is an additional layer involved (the web services) you have to speed things up in other part of the system to overcome the delays in the web services calls (using caches, optimized db queries, optimized nosql databases).

I think the project started as a service provider and they've already had most of the Java back-end anyway so they could have chosen any front-end in this particular layout. The most important thing is that it works for them, and I know they’ve been in production for some time now.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.