Working with JMeter for about 2 years I've come to the optimal (for me) structure of the test plan. It's divided into several suites (thread groups) depending on user type (visitor or signed in user, etc.) and is quite large to simulate real user activity. Complex business operations can be grouped using Simple Controller for better readability of the test plan. Also do not forget about pauses.
Here is an example test plan structure:
Thread Group - Visitor Suite
Simple Controller - Homepage
Transaction Controller - Homepage
HTTP Request Sampler
...
Random Order Controller
Simple Controller - News page
Transaction Controller - News page
HTTP Request Sampler
...
...
Thread Group - User Suite
Simple Controller - Sign In page
Transaction Controller - Sign In page
HTTP Request Sampler
...
Random Order Controller
Simple Controller - View User Profile page
Transaction Controller - View User Profile page
HTTP Request Sampler
...
Here is an example test plan structure:
Thread Group - Visitor Suite
Simple Controller - Homepage
Transaction Controller - Homepage
HTTP Request Sampler
...
Random Order Controller
Simple Controller - News page
Transaction Controller - News page
HTTP Request Sampler
...
...
Thread Group - User Suite
Simple Controller - Sign In page
Transaction Controller - Sign In page
HTTP Request Sampler
...
Random Order Controller
Simple Controller - View User Profile page
Transaction Controller - View User Profile page
HTTP Request Sampler
...