[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"project-12921389":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":46,"what":47,"said":100,"maker_in_thread":222,"shape":232,"grid":237,"attempts":394,"same_week":395,"maker_shows":39,"maker_hidden":424,"reader_version":425,"card":426},"12921389","CloudRail","Amazon S3, Microsoft Azure, Rackspace, Backblaze via a Single API","title","Show HN: Amazon S3, Microsoft Azure, Rackspace, Backblaze via a Single API","https:\u002F\u002Fcloudrail.com\u002Fenterprise-cloud-storage-interface\u002F","cloudrail.com","tmm_",1478793056,2016,191,65,144,2264,7,"notable","dev_tools","cloud storage abstraction library","library",[24,25,26,27,28],"cloud storage","s3 api","unified api","multi cloud","object storage","mixed",-0.375,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,10,0,11,23,{"execution":38,"idea":40,"docs":41,"pricing":43},{"positive":34,"critical":39},1,{"positive":39,"critical":18},{"positive":34,"critical":42},3,{"positive":34,"critical":34},[39,39,34,34,34,34,34,34,34,34,34,34,34,42,39,42,34,45,34,34,34,42,39,42,34,39,42,45,39,34,34,39,34,42,39,42,34,34,39,39],5,null,{"problem":48,"audience":55,"pricing":63,"motivation":73,"time_to_build":46,"stack":77,"openness":98,"stage":99,"team_size":98},{"value":49,"source":50,"evidence":51},"Integrating several cloud storage providers means writing separate code for each","maker",[52],{"id":53,"by":11,"text":54},"12921601","This allows you to easily integrate multiple of these providers if necessary or easily switch. Of course you can integrate them one by one on your own but that takes a lot of…",{"value":56,"source":57,"evidence":58},"Developers integrating enterprise cloud storage","inferred",[59,62],{"id":60,"by":11,"text":61},"12921539","This is our brand new unified API for enterprise cloud storage providers. It's part of the CloudRail API Integration Solution which consists of multiple unified APIs for…",{"id":53,"by":11,"text":54},{"value":64,"source":50,"evidence":65},"Commercially licensed; free for non-commercial projects",[66,69],{"id":67,"by":11,"text":68},"12921825","Nope, we don't use it but it is a very cool project. We have SDKs for Android, Objective-C, Swift, Java and Node.js so far. That's why we couldn't us it anyways. We don't want to…",{"id":70,"by":71,"text":72},"12926904","pierrec",">Note that this is software and not a service. It appears that Cloudrail not a service either, just a commercially licensed library (like Qt for example). In fact, I find their…",{"value":74,"source":50,"evidence":75},"Offer easy integrations across platforms and use cases",[76],{"id":67,"by":11,"text":68},[78,82,86,90,94],{"value":79,"source":50,"evidence":80},"Android SDK",[81],{"id":67,"by":11,"text":68},{"value":83,"source":50,"evidence":84},"Objective-C",[85],{"id":67,"by":11,"text":68},{"value":87,"source":50,"evidence":88},"Swift",[89],{"id":67,"by":11,"text":68},{"value":91,"source":50,"evidence":92},"Java",[93],{"id":67,"by":11,"text":68},{"value":95,"source":50,"evidence":96},"Node.js",[97],{"id":67,"by":11,"text":68},"unknown","launched",{"praise":101,"objections":114,"requests":144,"questions":170,"alternatives":182},[102],{"value":103,"source":104,"evidence":105},"Handy set of tools with a nice feature set","commenter",[106,110],{"id":107,"by":108,"text":109},"12922112","reilly3000","Looks like a handy set of tools. Check the spelling of 'Download' on the linked page :)",{"id":111,"by":112,"text":113},"12921541","kierenj","It's a nice feature-set, looks well-designed, and handy - but anyone using one of these APIs would find it super trivial to implement this themselves? I'm not sure I see the…",[115,126,137],{"value":116,"source":104,"evidence":117},"Abstraction over storage stores is leaky due to differing consistency guarantees",[118,122],{"id":119,"by":120,"text":121},"12921848","jameshart","Do all these services provide equivalent or abstractable guarantees? Amazon S3, for example, provides 'read-after-write' consistency, meaning once you've received a positive…",{"id":123,"by":124,"text":125},"12933075","EpicEng","That's kind of the point though. This abstraction seems doomed to be extremely leaky. Honestly, I'd rather just deal with them separately than be constantly fighting an API.",{"value":127,"source":104,"evidence":128},"Little use case beyond pricing; trivial to implement yourself",[129,130,133],{"id":111,"by":112,"text":113},{"id":131,"by":112,"text":132},"12922027","I see what the feature is, but I don't see the use case or benefit - in this particular case! The social, payment, consumer storage, I definitely do. But it feels a little like…",{"id":134,"by":135,"text":136},"12922107","okreallywtf","Can you provide a use-case for when you would need to be able to easily switch (or potentially hot-swap) cloud storage? It sounds like some of the justification for ORM's; while…",{"value":138,"source":104,"evidence":139},"Dependence on an always-on hosted API is a concern",[140],{"id":141,"by":142,"text":143},"12923664","45h34jh53k4j","Its nice but what incentive does cloudrail have to provide perpetual gratis access to someone elses API? Unlike an app that can still work when the original developer goes broke,…",[145,156,163],{"value":146,"source":104,"evidence":147},"Add Google Cloud Storage support",[148,152],{"id":149,"by":150,"text":151},"12924192","crb","No Google Cloud Storage? It even has an S3 API you could use...",{"id":153,"by":154,"text":155},"12925064","johansch","Yeah, seriously speaking. Azure, Rackspace and Backblaze before Google? lol.",{"value":157,"source":104,"evidence":158},"Allow custom endpoint URLs for S3\u002FSwift-compatible stores",[159],{"id":160,"by":161,"text":162},"12924587","mugsie","Why not allow people to specify URLs ? e.g. Swift (what RackSpace runs) can be run anywhere, Ceph can imitate s3 or swift, and Eucalyptus can allow people to run API compatible…",{"value":164,"source":104,"evidence":165},"Add storage APIs to headline",[166],{"id":167,"by":168,"text":169},"12922061","doczoidberg","please add \"storage APIs\" to the headline. without it, it is misleading",[171,178],{"value":172,"source":104,"evidence":173},"How are API changes handled?",[174],{"id":175,"by":176,"text":177},"12921689","ohstopitu","so how exactly would changes in API be handled?",{"value":179,"source":104,"evidence":180},"How do consistency guarantees differ across providers?",[181],{"id":119,"by":120,"text":121},[183,194,201,208,215],{"value":184,"source":104,"evidence":185},"Apache libcloud",[186,190],{"id":187,"by":188,"text":189},"12921663","eriksssss","Also check out libcloud by Apache. Pretty solid Python API wrapping various cloud services. :)",{"id":191,"by":192,"text":193},"12922088","hackerboos","Also libcloud https:\u002F\u002Flibcloud.apache.org\u002F",{"value":195,"source":104,"evidence":196},"Apache jclouds",[197],{"id":198,"by":199,"text":200},"12921770","frugalmail","No monthly fees, support open source: http:\u002F\u002Fjclouds.apache.org\u002F Wouldn't surprise me if that's what they're using behind the SaaS",{"value":202,"source":104,"evidence":203},"S3Proxy",[204],{"id":205,"by":206,"text":207},"12921990","gaul","S3Proxy offers similar multi-protocol access at the S3 API layer: https:\u002F\u002Fgithub.com\u002Fandrewgaul\u002Fs3proxy It has compatibility with local filesystem, Backblaze B2, Google Cloud…",{"value":209,"source":104,"evidence":210},"Rclone",[211],{"id":212,"by":213,"text":214},"12921476","0xmohit","Open source alternative: Rclone -- http:\u002F\u002Frclone.org\u002F",{"value":216,"source":104,"evidence":217},"Terraform",[218],{"id":219,"by":220,"text":221},"12921981","jsiepkes","Isn't this what Hashicorp's Terraform also provides?",{"comments":223,"answered":45,"key":224},15,[225,228,231],{"id":226,"text":227},"12921933","Very good question. Of course all services behave a little differently which is out of our control. To be honest, I don't have an exact answer on that. In my first tests I could…",{"id":229,"text":230},"12922059","Thanks! We'll address this in our documentation.",{"id":60,"text":61},{"commenters":233,"max_depth":234,"maker_replies":223,"first_comment_mins":235,"lifespan_hours":236},43,6,8,95,[238,240,242,244,248,252,255,257,260,262,264,267,269,271,274,276,279,280,283,286,289,291,293,295,296,297,301,303,305,310,313,314,316,317,318,321,322,323,325,327,329,330,332,333,336,339,340,343,347,350,352,355,357,359,363,365,367,369,371,374,376,380,383,387,391],[119,34,39,239,120,34],"project\u002Fcritical\u002Fexecution",[226,34,34,241,11,39],"maker\u002Fneutral\u002Fexecution",[123,34,39,243,124,34],"project\u002Fcritical\u002Fidea",[245,34,34,246,247,34],"12921966","commenter\u002Fneutral\u002Fnone","Scaevolus",[249,34,34,250,251,34],"12922103","other\u002Fneutral\u002Fnone","jamesblonde",[253,34,34,250,254,34],"12922154","kevan",[256,34,34,250,251,34],"12922176",[258,34,34,250,259,34],"12922272","yandie",[261,34,34,250,254,34],"12922761",[263,34,34,250,247,34],"12922851",[265,34,34,250,266,34],"12925646","Yrlec",[268,34,34,250,206,34],"12922048",[229,34,34,270,11,39],"maker\u002Fneutral\u002Fdocs",[272,34,34,250,273,34],"12923167","ejdyksen",[275,34,34,250,206,34],"12923254",[277,34,34,250,278,34],"12923935","finnh",[212,39,34,250,213,34],[281,39,34,250,282,34],"12921590","brandur",[284,39,34,250,285,34],"12923912","atomi",[287,39,34,250,288,34],"12924121","saganus",[60,32,34,290,11,39],"project\u002Fpositive\u002Fidea",[107,32,42,292,108,34],"project\u002Fneutral\u002Fdocs",[294,32,34,270,11,39],"12922146",[160,32,39,243,161,34],[205,42,34,250,206,34],[298,42,42,299,300,34],"12923443","project\u002Fneutral\u002Fnone","bedros",[302,42,34,250,206,34],"12926473",[70,42,42,304,71,34],"project\u002Fneutral\u002Fpricing",[306,307,45,308,309,34],"12921980",4,"maker\u002Fpositive\u002Fnone","notmyname",[311,307,34,312,11,39],"12922029","maker\u002Fneutral\u002Fnone",[187,45,34,250,188,34],[315,45,34,312,11,39],"12921835",[198,234,34,250,199,34],[67,234,34,312,11,39],[319,234,42,299,320,34],"12923936","Senji",[191,234,34,250,192,34],[111,18,39,243,112,34],[53,18,34,324,11,39],"maker\u002Fneutral\u002Fidea",[175,18,42,326,176,34],"project\u002Fneutral\u002Fidea",[328,18,34,324,11,39],"12921742",[131,18,39,243,112,34],[331,18,34,324,11,39],"12922095",[134,18,42,324,135,34],[334,18,42,304,335,34],"12922672","blantonl",[337,18,45,290,338,34],"12924124","tedmiston",[141,235,39,243,142,34],[341,235,34,342,11,39],"12923779","maker\u002Fneutral\u002Fprivacy",[344,345,34,250,346,34],"12944245",9,"mboehm",[348,345,34,250,349,34],"12948538","cloudrail",[351,345,34,250,346,34],"12949998",[353,33,39,243,354,34],"12923143","atmos",[167,35,39,356,168,34],"project\u002Fcritical\u002Fdocs",[358,35,34,270,11,39],"12922119",[360,361,42,326,362,34],"12921970",12,"going_to_800",[364,361,34,324,11,39],"12922015",[149,366,39,243,150,34],13,[153,366,34,368,154,34],"commenter\u002Fcritical\u002Fidea",[219,370,42,326,220,34],14,[372,370,34,250,373,34],"12922461","BlackjackCF",[375,370,34,326,11,39],"12922518",[377,370,34,378,379,34],"12925115","commenter\u002Fneutral\u002Fidea","movedx",[381,223,42,326,382,34],"12923952","sigden",[384,385,39,356,386,34],"12924890",16,"ninju",[388,389,39,356,390,34],"12921657",17,"pfista",[392,389,34,393,11,39],"12921754","maker\u002Fpositive\u002Fdocs",[],[396,401,406,411,415,420],{"id":397,"name":398,"points":399,"category":400},"12958445","Primitive",798,"creative",{"id":402,"name":403,"points":404,"category":405},"12956243","Whosfiring",256,"web_saas",{"id":407,"name":408,"points":409,"category":410},"12940615","jamesbvaughan.com",238,"languages",{"id":412,"name":413,"points":414,"category":20},"12932592","Blink Shell for iOS",219,{"id":416,"name":417,"points":418,"category":419},"12938636","Gridmaster",188,"learning_science",{"id":421,"name":422,"points":423,"category":400},"12958813","Commits.io",163,false,"v2",{"id":427,"name":5,"line":6,"ai":424,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":428,"top":18,"kw":429,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":430,"url":9,"mix":431,"praise":103,"objection":116,"sub":21},12921389,-0.37,[24,25,26,27,28],"1100000000000313050003130135100103130011",[32,33,34,35],1794036549381]