Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Масштабируемый сервис в облаке с нуля

Масштабируемый сервис в облаке с нуля

Нельзя просто так взять, и начать раздавать бинарники! На этом обожглись, например, GitHub и Google, а они умеют писать код. В чем же дело? А в том, что бинарники — большие, и инструменты сборки качают их как не в себя. Это как DDoS атака, только все время, причем так и задумано. А теперь прикрутите сверху метадату, дорогие вызовы REST API, управление квотами, сбор статистики, генерацию индексов и раздачу всего этого по всей планете… и получается как-то непросто.

Знакомьтесь, это Bintray, через который разработчики по всему миру раздают свои опенсорсные бинарники, и похоже, с ним у нас всё получилось. А всё потому, что Java не тормозит. Мы вам расскажем как мы смогли создать распределенную по дата-центрам дублированную, масштабируемую систему на Java, которая в состоянии справиться с массивной параллельной нагрузкой (aka «да вы что все, охренели, одновременно всё скачивать?!»).

Ещё мы объясним, зачем нам 5 разных нереляционных баз данных и как чудесные Java решения типа Grizzly и Jersey могут служить прекрасной альтернативой традиционным веб-серверам.

Baruch Sadogursky

August 31, 2013
Tweet

More Decks by Baruch Sadogursky

Other Decks in Technology

Transcript

  1. None
  2. None
  3. None
  4. None
  5. None
  6. None
  7. None
  8. None
  9. None
  10. Some Numbers ___________ liftoff + 8 months

  11. Some Numbers ___________ liftoff + 8 months Users 6K

  12. Some Numbers ___________ liftoff + 8 months Users 6K Packages

    70K
  13. Some Numbers ___________ liftoff + 8 months Users 6K Packages

    70K Requests 1.5B/Month
  14. None
  15. None
  16. Requirements ___________

  17. Requirements –Download binaries ___________

  18. Requirements –Download binaries –Web application ___________

  19. Requirements –Download binaries –Web application –REST API ___________

  20. Requirements –Download binaries –Web application –REST API –Backend services ___________

  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. Non-Func. Requirements _________________

  29. Non-Func. Requirements Requirement RPS Availability _________________

  30. Non-Func. Requirements Requirement RPS Availability Download 10K Always _________________

  31. Non-Func. Requirements Requirement RPS Availability Download 10K Always Interaction 100

    Almost always _________________
  32. Non-Func. Requirements Requirement RPS Availability Download 10K Always Interaction 100

    Almost always Services 1 Most of the time _________________
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. None
  43. None
  44. None
  45. File A: 46b34 File B: a64ff7 /repo-z/package-y/file-x /repo-m/package-n/file-k /repo-w/package-t/file-f

  46. File A: 46b34 File B: a64ff7

  47. None
  48. None
  49. None
  50. None
  51. None
  52. None
  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. None
  61. None
  62. None
  63. None
  64. Requirements ___________

  65. Requirements –Rapid Application Development ___________

  66. Requirements –Rapid Application Development –Flexible schema ___________

  67. Requirements –Rapid Application Development –Flexible schema –Java Back ground ___________

  68. Requirements –Rapid Application Development –Flexible schema –Java Back ground –Stateless

    ___________
  69. None
  70. Why don’t you just use...? Framework Why not? ________________

  71. Why don’t you just use...? Framework Why not? Angular.js Ember.js,

    ж.js Maturity ________________ -
  72. Why don’t you just use...? Framework Why not? Angular.js Ember.js,

    ж.js Maturity Wicket State ________________ -
  73. Why don’t you just use...? Framework Why not? Angular.js Ember.js,

    ж.js Maturity Wicket State JSF No comment ________________ -
  74. Why don’t you just use...? Framework Why not? Angular.js Ember.js,

    ж.js Maturity Wicket State JSF No comment Non-java Not java bg ________________ -
  75. None
  76. None
  77. None
  78. None
  79. None
  80. None
  81. None
  82. None
  83. None
  84. None
  85. None
  86. None
  87. None
  88. None
  89. None
  90. Grails means Gorm!

  91. None
  92. None
  93. None
  94. None
  95. None
  96. None
  97. None
  98. None
  99. None
  100. None
  101. Executive summary Framework Why not? ________________

  102. Executive summary Framework Why not? Lucene/compass Only embedded, resource guzzler

    ________________
  103. Executive summary Framework Why not? Lucene/compass Only embedded, resource guzzler

    solr Bad grail s integration ________________
  104. Executive summary Framework Why not? Lucene/compass Only embedded, resource guzzler

    solr Bad grail s integration sphynx No incremental index ________________
  105. None
  106. None
  107. None
  108. None
  109. None
  110. None
  111. None
  112. None
  113. None
  114. None
  115. None
  116. None
  117. None
  118. None
  119. None
  120. None
  121. None
  122. None
  123. None
  124. None
  125. None
  126. None
  127. None
  128. None
  129. None
  130. None
  131. SaaS for Download Server Component SaaS _________________

  132. SaaS for Download Server Component SaaS blob storage SoftLayer datastore

    _________________
  133. SaaS for Download Server Component SaaS blob storage SoftLayer datastore

    mapping Cloudant _________________
  134. SaaS for Web and services Component SaaS _________________

  135. SaaS for Web and services Component SaaS Model Mongohq _________________

  136. SaaS for Web and services Component SaaS Model Mongohq Grail

    s N/A _________________
  137. SaaS for Web and services Component SaaS Model Mongohq Grail

    s N/A ElasticSearch N/A _________________
  138. SaaS for Web and services Component SaaS Model Mongohq Grail

    s N/A ElasticSearch N/A Redis N/A _________________
  139. None
  140. None
  141. None
  142. None
  143. None
  144. Virtualization __________

  145. Virtualization __________ Pros

  146. Virtualization __________ Pros – Cheap

  147. Virtualization __________ Pros – Cheap – elasticity

  148. Virtualization __________ Pros – Cheap – elasticity – Volatility

  149. Virtualization __________ Pros – Cheap – elasticity – Volatility cons

  150. Virtualization __________ Pros – Cheap – elasticity – Volatility cons

    – Overhead
  151. None
  152. Virtualization __________ Pros – Cheap – elasticity – Volatility cons

    – Overhead – Tenant, not owner
  153. None
  154. None
  155. None
  156. None
  157. None
  158. None
  159. None
  160. None
  161. None
  162. None
  163. None
  164. None
  165. None
  166. None
  167. None
  168. None
  169. None
  170. None
  171. None
  172. None
  173. None
  174. None
  175. None
  176. None
  177. None
  178. None
  179. None
  180. None
  181. None
  182. None
  183. None
  184. None
  185. None
  186. None
  187. 1. Vagrant boots centos on virtualbox

  188. 1. Vagrant boots centos on virtualbox 2. Chef install s

    all db and service rpms from private YUM repo
  189. 1. Vagrant boots centos on virtualbox 2. Chef install s

    all db and service rpms from private YUM repo 3. Profit!
  190. None
  191. None
  192. None
  193. None
  194. None
  195. None
  196. None
  197. None
  198. None
  199. None
  200. None
  201. None
  202. None
  203. None
  204. None
  205. None
  206. None
  207. None
  208. None
  209. None
  210. None
  211. None
  212. None
  213. None
  214. None
  215. None
  216. None
  217. None
  218. None
  219. Conclusions time ______________

  220. Conclusions time –Define Criticality ______________

  221. Conclusions time –Define Criticality –Embrace the change ______________

  222. Conclusions time –Define Criticality –Embrace the change –Plan for scale,

    but be real ______________
  223. Conclusions time –Define Criticality –Embrace the change –Plan for scale,

    but be real –Backup everything! ______________
  224. None