You Too Can Be a Radio Host or How We Scaled a .NET Startup and Had Fun Doing it!<br />Aleksandr Yampolskiy and Rob Blacki...
Who Are We?<br />Dr. Aleksandr Yampolskiy, CTO    (alex@cinchcast.com)<br />Previously head of security and compliance for...
Previously Director of Development at IDT in charge of systems for global businesses in 9 diff countries
CIO of VoiceNet subsidiary of Destia.
Hobbies: competitive volleyball player, as well as basketball, father of 3 girls and lately cranking out code at midnight....
~30 Employees
10 of them in Tech
HQ in New York, NY
Millions of pageviews a day
Powering over 1,500 hours of content creation every day</li></ul>Confidential © 2011 Cinchcast - All Rights Reserved <br /...
BlogTalkRadioOur Owned Media Property<br />
The Cinchcast Platform<br />Confidential © 2011 Cinchcast - All Rights Reserved <br />5<br />
DEMO TIME - LIVE<br />Confidential © 2011 Cinchcast - All Rights Reserved <br />6<br />
Our Approach<br />“Be brief, be bright, be gone”<br />Don’t go chasing hot technologies of the day. Instead ‘mitigate your...
Current Technology Stack<br />.NET 3.5 C#<br />Jenkins + Nunit<br />Sauce On Demand - Selenium<br />Gomez + NewRelic for m...
Development Environment<br />Visual Studio 2010<br />StyleCop / Resharper experimentation.<br />Scrum methodology for larg...
Metrics<br />Not using metrics for your dev process is like landing a plane without any instruments in a storm.<br />Code ...
What Do Metrics Tell Us?<br />
Architecture <br />
BlogTalkRadio 2007<br />
BlogTalkradio 2008<br />
BlogTalkRadio 2009<br />
BlogTalkRadio 2010<br />
BlogTalkRadio 2011<br />
Evolution Summary<br />2008 – Multiple web servers via Coyote <br />	LB and Scaleout for session state<br />2009 – Read On...
Telephony Overview<br />
Cinch.fm Overview<br />
Decoupling spaghetti code<br />Search Service<br />Cache Service<br />AuthN Service<br />AuthZ Service<br /><ul><li>Decoup...
 Can be used either as DLL imports or through RESTful calls on the network.</li></ul>BlogTalkRadio<br />Cinch.FM<br />Cinc...
Upcoming SlideShare
Loading in …5
×

You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It

2,339 views

Published on

Cinchcast (aka BlogTalkRadio) is a startup in New York City.
Using only a phone, you can broadcast your message globally to millions of listeners.
Thousands of broadcasts are happening every day on topics ranging from technology to battling cancer.
In this talk, we will discuss how we accomplished this, the technology behind it, and the challenges ahead.
We will talk about what it's like building a startup in .NET and the techniques we have used to scale, such as
HTML and donut caching, lazy loading of data, elastic search, as well as marrying telephony to the web stack.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,339
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

You Too Can Be a Radio Host Or How We Scaled a .NET Startup And Had Fun Doing It

  1. 1. You Too Can Be a Radio Host or How We Scaled a .NET Startup and Had Fun Doing it!<br />Aleksandr Yampolskiy and Rob Blackin<br />
  2. 2. Who Are We?<br />Dr. Aleksandr Yampolskiy, CTO (alex@cinchcast.com)<br />Previously head of security and compliance for Gilt Groupe companies, in charge of securing IT infrastructure, secure architecture, PCI/SOX compliance, etc. <br />Various leadership roles in Goldman Sachs, Oracle, Microsoft building scalable, enterprise software for IDM, SSO, AuthN/AuthZ. <br />Ph.D. in Crypto Tools for Efficient Distributed Computing<br />Hobbies: chess, Edward Hopper, Ray Bradbury, martial arts, lately foosball and coffee.<br /><ul><li>Rob Blackin, VP of Development and Operations (robblackin@cinchcast.com)
  3. 3. Previously Director of Development at IDT in charge of systems for global businesses in 9 diff countries
  4. 4. CIO of VoiceNet subsidiary of Destia.
  5. 5. Hobbies: competitive volleyball player, as well as basketball, father of 3 girls and lately cranking out code at midnight.</li></li></ul><li>Company Overview<br /> Cinchcast provides cloud-based software and services for creating, distributing, measuring and monetizing voice-based content<br /> BlogTalkRadio is a consumer-based media property<br /><ul><li>Founded in 2006
  6. 6. ~30 Employees
  7. 7. 10 of them in Tech
  8. 8. HQ in New York, NY
  9. 9. Millions of pageviews a day
  10. 10. Powering over 1,500 hours of content creation every day</li></ul>Confidential © 2011 Cinchcast - All Rights Reserved <br />3<br />
  11. 11. BlogTalkRadioOur Owned Media Property<br />
  12. 12. The Cinchcast Platform<br />Confidential © 2011 Cinchcast - All Rights Reserved <br />5<br />
  13. 13. DEMO TIME - LIVE<br />Confidential © 2011 Cinchcast - All Rights Reserved <br />6<br />
  14. 14. Our Approach<br />“Be brief, be bright, be gone”<br />Don’t go chasing hot technologies of the day. Instead ‘mitigate your top problems’<br />Achieve “essential”, then worry about “excellent”.<br />Be a “how team” instead of a “no team”.<br />Build security into the software development lifecycle.<br />Love And Other Drugs <br />
  15. 15. Current Technology Stack<br />.NET 3.5 C#<br />Jenkins + Nunit<br />Sauce On Demand - Selenium<br />Gomez + NewRelic for monitoring<br />JQuery<br />ASP.NET and MVC 3<br />IIS 6<br />SQL SERVER 2005<br />Windows Server 2003 and 2008<br />Red 5<br />Asterisk, Pactolus<br />AiCache<br />Aptimize<br />
  16. 16. Development Environment<br />Visual Studio 2010<br />StyleCop / Resharper experimentation.<br />Scrum methodology for large features + adopting Kanban for various bug fixes<br />JIRA for project management + Greenhopper<br />Svn, Jenkins<br />
  17. 17. Metrics<br />Not using metrics for your dev process is like landing a plane without any instruments in a storm.<br />Code coverage<br />Site throughput<br />Number of critical security bugs<br />Time to fix Blocker/Critical/Major JIRA issues.<br />Percentage of developers using your site.<br />Etc.<br />
  18. 18. What Do Metrics Tell Us?<br />
  19. 19. Architecture <br />
  20. 20. BlogTalkRadio 2007<br />
  21. 21. BlogTalkradio 2008<br />
  22. 22. BlogTalkRadio 2009<br />
  23. 23. BlogTalkRadio 2010<br />
  24. 24. BlogTalkRadio 2011<br />
  25. 25. Evolution Summary<br />2008 – Multiple web servers via Coyote <br /> LB and Scaleout for session state<br />2009 – Read Only databases through replication and aptimize for combining JS, CSS and Images on the fly.<br />2010 - aiCache for caching html, second farm on amazon for specific traffic, specializtion of web and database servers.<br />2011 – Contendo cdn, services framework, retired aptimize due to Continuous Integration process, Service broker queuing.<br />
  26. 26. Telephony Overview<br />
  27. 27. Cinch.fm Overview<br />
  28. 28. Decoupling spaghetti code<br />Search Service<br />Cache Service<br />AuthN Service<br />AuthZ Service<br /><ul><li>Decoupling key pieces of the code into separate services possibly written in diff languages.
  29. 29. Can be used either as DLL imports or through RESTful calls on the network.</li></ul>BlogTalkRadio<br />Cinch.FM<br />Cinchcast<br />
  30. 30. Services <br />Based on Martin framework (https://github.com/thegrubbsian/Martin)<br />Lightweight .NET framework mapping URLs to actions.<br />Modified framework to reflect interfaces and automatically expose all their methods.<br />
  31. 31. Service Philosophy<br /><ul><li>RESTful model, using JSON
  32. 32. Not all data is relational, so database isn’t always a good medium.
  33. 33. Logging is key to detecting problems.
  34. 34. Reinventing the wheel can be a good thing.</li></li></ul><li>Elastic Search<br />Our first service is moving search off DB.<br />Settled on Elastic Search (http://www.elasticsearch.org/ ) is based on top of Lucene<br />A novel project. Unlike SOLR, it can handle real-time search applications.<br />Due to Ryan Sonnek<br />
  35. 35. Elastic Search<br />
  36. 36. Caching<br />“Donut caching” : caches most of the page except a few dynamic regions.<br />.Net caching via Fixed Expiration<br />myCache.Insert("LiveChatRooms", liveRooms, myDependency, DateTime.UtcNow.AddMinutes(2), Cache.NoSlidingExpiration);<br />.Net caching via Sql Dependency Expiration<br /> SqlCacheDependency myHDDependency = new SqlCacheDependency(DBName, "Genres");<br /> myCache.Insert(DictionaryOfGenreEntityByID, myDictionary, myHDDependency);<br />Data Caching via Scaleout<br /> return DCacheSoss.GetObjectFromNamedCache(CacheName, UniqueKeyName);<br />CDN caching of JS, CSS and Images via Contendo and Limelight<br />HTML Caching via CDN – Contendo, Limelight, aiCache<br />
  37. 37. Cool Tech Projects On the Horizon<br />Personalization of radio shows based on customer’s preferences.<br />Build out of SOA Cinchcast platform from Python, .NET, Java components communicating as RESTFUL JSON-based services<br />Moving real-time search to ElasticSearch (right now just for RSS/bots)<br />Improving our caching layer performance (too many hit misses)<br />A/B testing framework<br />
  38. 38. Conclusion<br /><ul><li> Architecture improvements are gradual and sometimes you make mistakes (e.g. Aptimize)
  39. 39. Don’t chase hot technologies (e.g. MemCached mania). Sometimes reinventing the wheel is good.
  40. 40. REST+JSON > SOAP+XML
  41. 41. Be brief, be bright, be gone.</li></li></ul><li>We’re Hiring. Why Work Here?<br />Open Positions:<br /><ul><li>Front-end Engineer
  42. 42. Sys Admin
  43. 43. Tech Lead
  44. 44. If you are good we’ll find a role for you : jobs@cinchcast.com</li></ul>Well-funded profitable startup used by millions.<br />Patent-pending radio tech utilized in a new way.<br />Medical/dental/etc. benefits.<br />Great office space in mid-town right near subway.<br />Flexible hours. Top-notch compensation + stock options.<br />

×