An alternative solution proposed was the increase of bitcoin Block. Any such solution would lead to a hard fork, as Bitcoincash. While Segwit limits the size of data entering in a block from each transaction, by removing the signatures from the main block, solutions like Bitcoincash propose a larger Bitcoin Block.
The main issue that Segwit tackled was the transaction malleability, a flaw allowed anyone to change small details that modified the transaction id (and the subsequent hash) but not the content. This could could be exploited by making the sender believed that his transaction wasn’t executed and making him repeat the transaction, spending more than initially planned.
The lightning network tries to speed BTC transactions by handling many small but frequent transactions off-chain, and when when it’s time for a session of transactions to be settled they are sent back to the chain to be confirmed. Segwit’s malleability fix make any solution that use unconfirmed transactions, like Lightning Network, farm more easier to implement and safer.
Because Segwit is softfork, it’s not mandatory for nodes to use it. Nevertheless it gains more and more adaptation. At the moment of this post post more than 70% of the transactions are on Segwit