<div><span style="color: rgb(160, 160, 168); ">On Thursday, February 28, 2013 at 6:48 AM, Giovanni Bajo wrote:</span></div>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div><div>Il giorno 28/feb/2013, alle ore 12:18, Donald Stufft <<a href="mailto:donald.stufft@gmail.com">donald.stufft@gmail.com</a>> ha scritto:</div><br><blockquote type="cite"><div>
                <div><span style="color: rgb(160, 160, 168); ">On Thursday, February 28, 2013 at 6:13 AM, Jesse Noller wrote:</span></div><blockquote type="cite"><div>
                    <span><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div><br>On Feb 28, 2013, at 5:41 AM, Donald Stufft <<a href="mailto:donald.stufft@gmail.com">donald.stufft@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div>
                <div><span style="color: rgb(160, 160, 168); ">On Thursday, February 28, 2013 at 5:39 AM, Jesse Noller wrote:</span></div><blockquote type="cite"><div>
                    <span><div>Thread fork. </div><div><br></div><div>Anyway. I know we have at least 1 major rep of a cloud provider on the list, and I have at least one off in my pocket.</div><div><br></div><div>I'd like to start discussing (completely ignoring past efforts and discussion which got bogged down) how we can start distributing the package data we host via CDN rather than the mirroring system.</div><div><br></div><div>Most of all, we need the code in a pull request to support it ;)</div><div><br></div></span>
                   
                   
                   
                   
                </div></blockquote><div>
                    To be honest with PyPI as an origin you don't really even need to change
                </div><div>the code. You just drop your CDN in front of PyPI and it'll take care of</div><div>things.</div><div><br></div><div>Code changes are required if you want to store the packages on a cloud</div><div>storage provider.</div>
            </div></blockquote><br><div>Excellent. Now, the question is do we bother with both (CSP+CDN) or just go the CDN route short term?</div></span></div></blockquote><div>This is probably a question best asked to Noah. He knows the capabilities of the</div><div>VM hosts better as far as actual technical requirements. However moving storage</div><div>to a CSP does mean that scaling PyPI out by launching additional instances is</div><div>easier. I think he's talked about using gluster or similar as well which would have</div><div>similar properties (at the expense of the PSF needing to maintain the cluster ofc).</div>
                  
                </div></blockquote><br></div><div>I don't think you can just "drop the CDN in front of PyPI". It depends on the CDN of course, and how their API works, but usually you need to separate static resources (to be CDN'd) from dynamic resources, make sure the origin serves the static resources with an appropriate caching header, and then rewrite the URLs to go through the CDN (so that PyPI tells everybody the CDN url instead of the origin URL). Moreover, you probably need special configuration (depending on the CDN) if you need it to go through SSL.</div><div><br></div><div>The only CDN that is a drop-in that I know of is Cloudflare, but it requires delegation of name servers which is 1) probably impossible until pypi is under <a href="http://python.org">python.org</a> and 2) I guess we would violate their ToS anyway since they want sites visited by browsers and not file servers (pypi qualifies for both, but I guess most of the traffic is make through the latter).</div></div></div></span></blockquote><div>It should basically be that easy offhand:</div><div>  - CloudFront works this way (they call it custom origins). </div><div>  - Fastly works this way (this is the only way they work).</div><div><br></div><div>Basically your CDN is just a giant cache and it will either serve a file from</div><div>memory, or will hit the origin (PyPI) to fetch the file.</div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;"><span><div><div><div><br></div><div>Jesse, if you can give me a pointer to the CDN service you've agreements/discussions with (assuming they have public docs on their API), I can prepare a PyPI pull request.</div><div apple-content-edited="true">
<span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: 13px; "><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: 13px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: 13px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>-- </div><div>Giovanni Bajo   ::  <a href="mailto:rasky@develer.com">rasky@develer.com</a><br>Develer S.r.l.  ::  <a href="http://www.develer.com/">http://www.develer.com</a><br><br>My Blog: <a href="http://giovanni.bajo.it/">http://giovanni.bajo.it</a></div><div><br></div></div></span></div></span></span></div></div></div></span>
                 
                 
                <div style="border-bottom: 1px solid #f0f0f0; height: 10px;">
                </div>
                <br>
                 
                <div style="font-weight: bold; font-size: 14px; margin-bottom: 5px;">Attachments:</div>
                 
                 
                 
                 
                 
                 
                 
                <div>
                     
                    <div style="">- smime.p7s</div>
                     
                </div>
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>