Tuesday, June 12, 2012

Magento - For No One!!!

When you need 17 tables for categories and 67 tables (yes, freaking 67 tables) to manage products in a shopping cart, as a developer you know you have messed up something a big time. That is exactly what Magento has done. What's more? Magento tom-toms about this very "feature" and shows how flexible structure they have got. However, everybody and his aunt knows how flexible or rather inflexible Magento is.


Slow Slow Slow!!!

The fact that Magento has such an insane database structure it's not and is never going to be fast. It is dead slow in comparison to other carts. Their database structure would kill any database engine. - and they know it. That's why they use the ad-hoc solution of cache management. But it never occurred to them that in a heavy traffic site the cache may do the role of evil. Even cache management took them only thus far. It still is slow. It will require special server settings to make Magento run reasonably well.


Customizable?

Magento claim that their's is a highly customizable structure. That must be a jock of the century!! A flexible system would mean that even a less skilled programmer will also be able to understand and customize a program. But that is not the case with Magento. You will need highly skilled programmers not only just to customize it but even to maintain it. A skilled programmer would tweak any system (good or bad) to suit his needs. But in Magento he will take lot more time to do it than a normal system.

For big organization?

It is a popular belief on internet that Magento is for larger organization. How exactly is that? Why exactly an organization needs a crazily overbuilt and hard to maintain system? Just because Magento is doing an easy stuff in ridiculously hard way, it doesn't make it better for a big org. I would think that if you are creating a website for a big org, you will rather create it from scratch to suit all its needs. The open source platforms provide generalized solution and lot of its features you will not want. Neither you will want the same admin panel. But as an organization you will still need lot of customization which will require hacks/patches in the opensource's default code. So if the budget is not a problem, it is always good to go for the customized solution.

For small shops?

A big NO. A Small shops will want a simple solution which is easy to program and maintain. Magento offers none of these. A Magento implementation will cost you much more money than any other simpler opensource. This is because Magento requires special developers and special hosting. And this is just an up-front cost. As you go along the cost of maintaining a Magento implementation will be bigger.

Magento version migration?

Well all I would say is that - Do it at your own risk!!!

EAV Model?

For me EAV = TWKTDEC

TWKTDEC = The Winner of "Kill The Database Engine" Competetion.

---------------------------------------------------------------------------------------------
In short Magento is the "Anti Gravity Pen" that nobody really needed and its structure is "Burg Dubai" which is crazily overbuilt and which almost brought down the great empire.

33 comments:

  1. me too 10001% agree :) such a crappy and ghost architecture of magento is always sucks....

    ReplyDelete
  2. you are invited to follow my blog

    ReplyDelete
  3. You should have a look at Forward, a new open source e-commerce platform combined with MongoDB by default (getfwd.com) -- a flexible document based database escapes mostly all of the issues you mention here.

    ReplyDelete
    Replies
    1. Yes indeed. Discovered it yesterday and I must say it looks pretty good - lightweight and not so bloated!!

      Delete
  4. 1000% agree!!! damn fuck hard magento

    ReplyDelete
  5. Yep! And to think that you only covered less than 10% of what's wrong with Magento!

    I'm a software engineer who works for an e-commerce retailer. We've been using Magento since mid-2009. Or, should I say, Magento has been using _us_ since mid-2009. I can't tell you how many hours we wasted just trying to implement the simplest damn thing. Sometimes my boss will come in in the morning and see all these new products that were created by themselves when everyone was sleeping (we double-checked, and Magento is acting, well, weird). And we, too, got bitten by the upgrade bug when we transitioned from v1.3 to 1.4. What we thought was going to be a simple task turned out to be days of tearing out hair, sobbing, whimpering, and saying, "Never again!!" We stuck to our promise and still haven't upgraded. In fact, at one point, I told my boss, "Okay, I can add feature X and Y and Z, but it will require that we never upgrade, since I'm going to be bypassing their API and talking straight to the database." That worked okay, and I was able to implement what he wanted, but, as you know, if you let a product like this rot, then 3rd-party integration is bound to break at some point, like it did last summer when FedEx changed their WS API and we had to rush to re-enable it again. This kind of situation, where you can neither move forward nor stand still, makes an engineer scratch his chin and think hard about what to do next...

    So, this past September I decided to steal some company time and secretly start work on our own e-commerce engine, not really knowing if it would work or not, but I thought why not, at least it'll be fun to see how I can turn a DB from over 400 tables into one with only 50. In a little over a month it went from concept to full-functional demo backed with real code and real business logic. I kept the site theme/UI exactly as it was. Beginning of October I walked into the office and showed my boss and said, "Navigate the site, browse, add items to your cart, checkout, etc., and keep a mental note of whatever seems different than the current site. I'll be back in 5 minutes." Of course, since the site looked and behaved exactly the same, there wasn't much he could see as being different. After 5 mins. I returned and he said, "Well, the first thing I immediately noticed was the it's waaay faster. Other than that, it seems the same. What did you do?" Then I let the cat out of the bag and asked him to give the green light to go all out and write our own engine. He looked pensive for a bit and then was like, "Okay, let's do it." I was, and still am, amazed at how little time it took to write a clean-room implementation from the ground up and have the entire public-facing part of the app done in about a month. All URLs and their content remained the same, so if a spider crawled it, it wouldn't notice anything except the speed boost. The hardest part was writing the ETL tools to get the data from Magento into our tables. The word "hell" seems inadequate for some reason. :)

    ReplyDelete
  6. In case you're still curious...

    The app is written in Java. We use various Spring projects (Spring Framework, Spring Security, Spring MVC) for the backend plumbing (IoC, security, web MVC, etc.). The table count went down to about 50 from 400+, as I mentioned before. All the EAV crap was tossed out the [fucking!] window and turned into documents stored in MongoDB, which has been nothing but lovely for us so far. Sales orders, customers, product indexes and the like, are stored in MySQL for transaction safety; we use Percona Server. We also index a lot of different pieces of data using Solr. Reverse proxying and static content-serving are done with nginx.

    Having an "always listening, always ready" thread-driven server design, it never has to reload any new configuration info when a new request comes in, unlike Magento which loads the whole world for each separate request. Frequently loaded data (catalog category tree and site navigation for now) is cached in memory in global scope, which cuts response time down even more. Early benchmarking before aggressive optimization shows tons of headroom and promise. Our current Magento setup is on a Linode virtual server (quad-code Westmere Xeon @ 2.4 GHz with 1.5 GB RAM and RAID10 storage). Load testing it using siege for 20 seconds and 50 concurrent clients, Magento reliably handles 7-8 requests per second before requests timeout or throw an HTTP 503 (service unavailable). On the same server and using the same siege settings, our engine handled approximately 350 requests per second, and it also never timed out or sent back a non-200 status code. This means it can probably handle quite a bit more clients and req/s while still staying snappy. I think we can hold off a bit now before scaling out.

    The only thing left right now is to build out the admin side. Ouch. It's about 35-40% done. What's pushing me forward is trying to outdo Magento as much as I can. The entire admin side is a web app that's all AJAX-driven and uses JSON for RPC data. Since we don't plan to sell the app but only use it internally, the admin side is quite a bit more simplified (though prettier and slicker). The other upside is that the internal APIs are very clean, so it's relatively easy to do all the CRUD.

    We've been penalized by Google for having slow response times. If my estimates are correct, that situation should reverse itself completely and put us above 90% of e-commerce sites in terms of speed.

    All in all, I can't complain! :) Magento taught me that software actually CAN be worse than you can imagine. Actually, it wasn't all bad everywhere. It did give us time to make enough revenue to write our own, and it taught me e-commerce, without which I couldn't have started this project.

    I say if you've got the wherewithal, write your own. Then you can do whatever you want with it and not be at the mercy of one of the core Magento developers who had happened to break something and now your store is down and you have to wait 2 months before a patch is rolled out if ever. Fuck that. And you just KNOW that the DB tables in Magento are going to continually get worse and worse the more you upgrade. Stale columns are left behind, references go dangling, the EAV structure eats itself from the outside in, blah blah.

    ReplyDelete
  7. What other carts would you suggest? I'm finding the same issues with Magento

    ReplyDelete
  8. Superb, what a weblog it is! This blog gives helpful information to us, keep it up.Magento developer for hire

    ReplyDelete
  9. Completely agree, the worst e-commerce platform ever!

    ReplyDelete
  10. Blah. I applied for some contract work for an e-com. They said their only PHP work they needed was maintaining Magento. Since my resume touted I learn fast, they said I should be up and running in no time.

    I love databases and the idea of getting to work with such a system intrigued me to no end! I downloaded many pdf's and stuff on how the database worked and stared at them for hours in awe of the beauty of the structure.

    Then I tried to actually DO anything with it. Brick wall after brick wall after brick wall. Even the tutorials on the internet don't always explain all the nuts and bolts the way they should. To add a simple link to a menu required adding a whole module including xml, php and html. Then adding more xml code to register the new code with the magento in another directory. Then the days of troubleshooting to make sure it does what you want it to actually do. Insanity!

    Then I had a data issue on one item and just needed to tweak it. Despite all the beautiful structure and all the wonderful pdf's and everything, it took DAYS to nail that sucker down.

    I eventually told them to take their money and go hire somebody who enjoys moving mountains with tweezers.

    ReplyDelete
  11. Magento is quit a heavy fellow with all the problems that contains :)

    ReplyDelete
  12. I dont agree with you. Although magento is little ocmplicated, it is the best ecommerce solution with various functionality, features, extensions, templates and many more. Nowadays many online retailers choose magento as their ecommerce platform. And I also have integrated an ecommerce store and recently worked with a magento product reviews extension.

    ReplyDelete
  13. magento is best , we have built a ecommerce site with 4000 products. magento rocks. www.budnetdesign.com

    ReplyDelete
  14. Superb, what a weblog it is! This blog gives helpful information to us, keep it up.web design orlando

    ReplyDelete
  15. I am very thankful to the author to write this fruitful information.It is worth sharing for other users.Thanks once againfor more knowledge- website design dubai

    ReplyDelete
  16. "I am always in search of such articles which provides lots of information on the subject matter for more knowledge- I was in search of such blog who explore my knowledge in the industry.for more knowledge- web design dubai

    ReplyDelete
  17. Nice share! Thanks a lot for such a lovely blog posting this time around as well. Seriously, your collection of thoughts and ideas compiled together in a single detailed verse makes me want to come back for more.
    link seo in philippines

    ReplyDelete
  18. Thanks for high grading the content and recommending it too and do visit again for more Magento updates.coaching classes in vadodara

    ReplyDelete
  19. Superb, what a weblog it is! This blog gives helpful information to us, keep it up.Engineering colleges in vadodara

    ReplyDelete
  20. Really interesting blog to clear out all your concept regarding the concepts.for more knowledge- send sms from pc

    ReplyDelete
  21. After a few months of working with Magento, I said this in a work appraisal: "• Working with Magento, with all of its unique conventions and abstractions, can sometimes be a joyless quagmire of existential despair!"

    12 months on and my sentiments haven't changed in the slightest...

    ReplyDelete
  22. Totally agree with this. After working some monthes with it, I just wana say few words: "this is the biggest piece of shit I work with" (15 years working IT now...).
    Beginners, dont loose your time... Look for something better coded, and it's not gone be complicated...
    Want a proof ? Just check the number of people having troubles with their magento and asking help on website like freelancers (worldwide)...

    ReplyDelete
  23. Thanks for the best blog.it was very useful for me.keep sharing such ideas in the future as well.this was actually what i was looking for,and i am glad to came here!
    eCommerce Development Services Company in Bangalore | Magento developers in Bangalore

    ReplyDelete
  24. Quantum Binary Signals

    Professional trading signals sent to your mobile phone every day.

    Start following our signals NOW and profit up to 270% daily.

    ReplyDelete
  25. BlueHost is ultimately one of the best web-hosting company with plans for all of your hosting needs.

    ReplyDelete