So far I've seen Pushpool, PoolServerJ and P2Pool. Which one of this would be easiest to set-up, maintain, effectiveness, and overall security?
PoolserverJ seems the best so far and easiest to set up.
Pushpool was the original but has some issues. The documentation is also a little hazy if you're a newbie to linux.
P2Pool is a decentralised pool, meaning that if you want to set up your own private pool, you can't use P2Pool.
there are several new mining pool server with new protocol for fastest connection, one of them is eloipool
See this table for mining pool comparison, https://en.bitcoin.it/wiki/Poolservers