What do I Need to Make a Social Networking App?

Discussion in 'iOS Programming' started by ArtOfWarfare, Mar 15, 2014.

  1. ArtOfWarfare macrumors 604

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #1
    A friend has designed a social networking app and got a lot of investors to back it. He asked me to program it all for him. It's going to be an iOS app - that part I entirely know how to do - that's going to rely on a server end.

    I've never done server side stuff before. What kinds of technologies would you recommend I look into? We're going to need to be able to handle account creation, account recovery, logging in, following, posting/viewing text and pictures, and posting/viewing audio and video clips.

    It kind of sounds like something SQL would do, except I've heard that doesn't scale well. Also, I'm not sure that SQL would really lend itself to binary files like pictures, audio, and video (but then again, would anything else?)
     
  2. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #2
    As far as SQL scaling, I've heard the many high volume sites use SQLite.http://www.sqlite.org/famous.html

    One upside to SQL is that it's pretty standard, it's been around for a long long time and there's a huge body of support for it.

    You might want to search around for someone that's done this and posted a writeup on it.

    I've read some studies about storage where they compared renting a server vs Amazon's AWS and others, the price difference was huge. IIRC, one company saved $250,000.00/month by switching services. Well worth looking into because getting it wrong can be costly.

    A large part of getting something to work well is understanding it, what it can and can't do.
     
  3. ArtOfWarfare thread starter macrumors 604

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #3
    AWS makes sense for a small number of server applications - those that are too large to fit in the house of one of your team members, but that are small enough that it wouldn't be worth it to have a dedicated IT guy (or team) to keep it up and running. While we're in the testing stage, I'll probably just have my development machine double as the server - once we deploy well probably buy several MacMinis or something to use as our servers.

    I'm thinking I'll run with SQL initially - I'll migrate to something else if it proves that it can't scale adequately.

    The issue is: how do I actually get this kind of backend server stuff set up?
     
  4. DennisBlah macrumors 6502

    DennisBlah

    Joined:
    Dec 5, 2013
    Location:
    The Netherlands
    #4
    To keep it easy and working on a mac you could consider an mySQL server.
    Or just dual-boot your mac with windows and there are plenty sql servers out on the net like MS SQL.

    Basically for good performance and updates I would go to an windows server, because Xservers are not being supported anymore.

    When you got an server running you just have to open your ports of your router to the server to make it access-able from the outside.
    This will come with some security where you have to work on tho.
     
  5. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #5
    If you want to succeed, interview and hire someone who's experienced and done scalable reliable secure server stuff before. There are 1000 ways an amateur back-end server setup can bog down, crash and get hacked. Trashing the reputation of a new social site is not a good way to start.
     
  6. ArtOfWarfare thread starter macrumors 604

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #6
    We'll probably hire somebody with that kind of experience in the coming months. How should we get started right now?
     
  7. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #7
    For a demo/mockup, you might try one of the mobile back-end-as-a-service providers, preferably one with a well documented API, so you can swap in your own back-end using the same API when the time comes if needed.

    See: http://www.raywenderlich.com/20482/...se-vs-stackmob-vs-appcelerator-cloud-and-more
     
  8. Sean7512 macrumors 6502a

    Joined:
    Jun 8, 2005
    #8
    For custom back-ends, Grails is my go to framework.

    Others are suggesting mySQL server, and thats fine. If your server is going to be Java based, I hope you use Hibernate so that it doesn't matter what database you use.

    For my iOS app, I am using Google App Engine as the back-end server. It scales really well and is significantly cheaper than AWS.

    Using stuff like Google App Engine though really limits you in how the server works. If they don't fit well for your needs, then I'd suggest doing Grails or some other server back-end and renting out a JBoss server to host it.
     
  9. Felasco Guest

    Joined:
    Oct 19, 2012
    #9
    Apologies, no offense intended, but this question reveals you're not the right person for this job.

    You know, have your friend go to the investors and ask if they want someone who has never done server side stuff before to build what they've put their money in to. The answer will be no.

    Be kind to your friend, keep him your friend, and find another role for yourself.
     
  10. MattInOz macrumors 68030

    MattInOz

    Joined:
    Jan 19, 2006
    Location:
    Sydney
    #10
    Dropbox are doing a datastore and sync API for Apps as well now. The big difference is they use the capacity of the users account with them to determine cost. The developers don't pay the user pays if they need more space.

    https://www.dropbox.com/developers/datastore

    Might not suit your project and haven't used it yet but very interested for future project. So just though I'd add it to the mix of the discussion.
     
  11. D.T. macrumors 603

    D.T.

    Joined:
    Sep 15, 2011
    Location:
    Vilano Beach, FL
    #11
    A few recommendations:

    Build a RESTful API for handling backend services. It’s easily consumed by iOS, plus, it’ll give you an API for other native clients or a web interface should you choose to pursue it.

    Use a PaaS provider like Heroku. Platform as a Service moves most of the administrative overhead out of your hands. There’s a number of good services out there, most support several stacks, but you’ll see that there’s “faves” for specific languages. They all support really easy to use plugins for performance monitoring, logs, notifications, etc.

    Heroku offers a free level of service too: single dyno/proc, a dev database costs nothing. There’s a few limits, but nothing you wouldn’t expect at a dev/test level, and scaling to a production level of service is _fantastically_ simple.

    Choose a stack/framework that reinforces +good+ dev patterns (MVC, DRY), I’m a big fan of Rails (i.e., Ruby on Rails), but would also consider Python + <framework> (probably Django). If you go with something like PHP, drop a framework on top of it: Zend, CakePHP, Yii. All of these are open-source as well, so you won’t have to worry about licensing, just infrastructure costs.

    If you want to use a traditional SQL database, vs. a KVP/no-SQL (like Redis, Mongo), then I’d suggest Postgres (any of those state/storage solutions are easily provisioned through a PaaS).

    For storage of content, you’ll want to look into a cloud based storage solution, like AWS S3. Not only is that easily integrated into a project, it scales well, and has high availability options for CDN right in the AWS solution stack.

    Look into the open source community of the tech you pursue for pre-existing solutions for authentication, S3, image handling, social integration, or any of the major modules you’ll need. No need to reinvent the wheel.

    FWIW, one my startups is a social product (including a native iOS app), that has many of the same moving parts. Let me know if you have any specific questions :)
     
  12. abnerhawkins macrumors newbie

    abnerhawkins

    Joined:
    Mar 18, 2014
    #12
    Today social media is booming and will. There are so many scripts and frameworks available on the web. You just need to find some of them free of cost and customize it as per your wish.
     

Share This Page