Best practice: needs private and public contents of same type The website need News, Image Gallery and Announcement. But all of the News, Image Gallery and Announcement has 2 types: public and private.

The private content is tend to be a "collaboration platform" for specific user role.

I've created two content types for News (news &amp; private_news), and so on for Image Gallery and Announcement.

So the website has 6 content types. I'm using content_access to make the content type public or private.

The problem with this, I dont know the future of the website. It will fails if in the future it needs public and private forum (where forum cannot exist in 2 content types).

Choice 2: Make single content types. It needs single News content type. The field accessibility is done by using field_permissions (not yet tested) and the node visibility is same as above; using content_access

But the problem is the content types become more complex. It maybe become very heavy for the server.

Choice 3: Use different sobdomain: www.site.com for public contents, and somename.site.com for private contents (not sure what name I should choose as subdomain).

I'm not sure which one the the best if the website growing bigger (in terms of traffic and website features).
Perhaps the deciding factor is to determine if the private users need to see the private content seamlessly integrated into the public content.  If they do solutions 1 &amp; 2 seem like they might work.  If, on the other hand, private content can or should be viewed separately from the public materials, separating into two subdomains (or even subsites) with different access rules would be much easier.