All of the descriptors used for the Aws stack had a similar ring to them with an intended audience of someone a little older and with a little, or more, legacy knowledge about tech. Oddly I could see this useful for two use cases.
1- explaining something to my mom, now over 60 and no longer in the know with regard to tech. Might remember what ftp is or collocation is 2- explaining to an older very siloed technical person, I’m thinking enterprise/gov networking in a place where they don’t get exposure to newer cloud stack stuff. (Banking, healthcare, FEMA)
Mostly because FTP has been considered insecure and kinda deprecated since 1999, and we've had better things (eg: SFTP) since.
So, for somebody in their fourties it might be a better name, but for somebody younger, it's definitely misleading.
Apparently APIs are really hard for most companies.
I know that S3 has nothing to do with FTP, but it's a nice analogy that I can relate to. Get off your high horse.
- Binary Storage
- Blob Storge
- File Storage
- Reliable Storage
FTP is a specific protocol. Hard drives (as a sibling comment mentions) are a specific technology. Our discipline is confusing enough that names should be precise, not analogical.
"This is Santa Monica Cop. It's my innovative, original series about a hip, streetwise cop who brings his own brand of policing to a much wealthier area than he's used to."
'Oh, like ... Beverly Hills Cop, then?'
"Nah, you're not getting it! See, it's in Santa Monica!"
Yes, S3 doesn't natively allow retrieval/upload via the FTP protocol. But at the level of abstraction of "what does this service do for me, and why would I want to dig into the docs and incorporate it into my system?", the FTP analogy communicates the use case.
"This is S3. It's a way to map a bunch of keys -- which look like directories and naturally follow a kind of hierarchical structure -- to opaque blobs of data, allowing CRUD operations."
'Oh, like an FTP server, then?'
"Nah, you're not getting it! See, you talk to it with a different protocol."
This is why "simple descriptions" are hard. Leaving nuance behind makes a lot of room for confusion.
Also, I think the difference is more between filesystem and object storage. You are still uploading files to both.
Please keep the discussion respectful.
I see your approach in a lot of fresh graduates. They’ve learned things from the ground up, which means a good chunk of what they’ve learned is useless historic knowledge that doesn’t actually teach you a lot about how the modern eco-system of the web works.
That’s time they could have spent learning docker and authentication security. I mean, it’s often the one guy/girl who’s spent their free time setting up ADFS authentication in AWS for the fun of it, who gets the job.
But why wouldn’t you teach them that instead of teaching then legacy shit they’ll never use that also isn’t really that handy for understanding how things work now?
We’re supposed to stand on the shoulders of giants, and having struggled with apache or better yet the IIS, is just so utterly useless.
Should they learn older technologies like Apache or IIS? No, learning those technologies teach few, if any, transferable skills. Should they build a web server from scratch in C? Yes, that definitely teaches transferable skills even if they use Node or Go or whatever the latest web tech stack is later. Should they also learn the latest web tech stack? Absolutely.
I think teaching big O is and focusing on efficiency is much better than teaching someone C. Especially in the modern world where garbage collection isn’t bad and memory is abundant.
I mean, we use a lot of Python and a lot of JS, both are fairly inefficient. On the tech side, but it’s very productive on the human end, and Human Resources are a lot more expensive than memory.
If you spent 1 week writing something that was half as efficient as if you’d spent two weeks on it, that extra week of pay, will still be paying for for the additional hardware after you die of old age.
Not the best CS lesson of course, but having hired people who learned C before X, they really don’t seem to have learned the memory lesson anyway.
Big O is useful but I think its usefulness is overblown. There are cases where understanding how the kernel allocates memory or how CPU caching works or how networking works, you can develop an algorithm that is inefficient in terms of Big O but is still performant. Sometimes you can even beat the best theoretical algorithm. The reason is that k is extremely important. If I can make k extremely small using my knowledge of the computer and n is within reason, then Big O often doesn't matter. So I don't have to waste time implementing fancy algorithms as a result. But I also have a better feel when Big O does matter. If I can't make k small or n is a huge number or both, then I spend the time on algorithm optimization and then understanding Big O is helpful.
I will give you a real example with GPUs. Let's say you want to do some GPGPU and you have data that is too big to fit in RAM. How do you process this data efficiently? Knowing how the GPU works is very important to solving this problem. You could spend days, weeks, years optimizing the crap out of Big O in your code, but it won't really move the needle in a lot of cases because that isn't the bottleneck. The primary bottleneck in this case is the PCIe bus and a high-level understanding of how it works is needed to keep it full of data as the GPU is processing it. Once that is solved, the next bottleneck will likely be the data format. The GPU is most efficient when each data sample is independent which is related to how the GPU cores work, caching works, etc. So putting the data in GPU-friendly format (not always possible) will make everything go faster even before worrying about Big O.
What C does is it forces you to learn how the computer really works because it is hard to be productive in C without that knowledge. And that knowledge is largely transferable.
I certainly agree with learning and using Python or JS when it makes sense because they are very productive languages. But from an education perspective, people who only learn JS are less likely to be able to solve the really hard problems because they lack that foundation of how the computer works. And there are plenty jobs where that doesn't matter too much but you should probably have at least one person around that really understands how the computer works for the times when it does.
If I came to you not knowing anything about the vocabulary used in your field of expertise is that your field’s fault or mine?
“Simple Storage Service” is one of those products that they actually named sensibly.
I guess the article just had to make up an alternative.
S3 has nothing to do with the FTP protocol, but if someone completely new to AWS and similar platforms asked "What's this S3 thing?", you might say "Think of it as sort of like an unlimited FTP server." You can connect to it through programs like CrossFTP, browse a folder hierarchy, upload files, link those files from a website, and in general do all the things people commonly use (S)FTP for, with the same tools they use for (S)FTP stuff. It's similar enough that it makes a good starting analogy.
App Scripts is another description I think is reasonable. Personally, I don't think manual invocation or modification of a stateful resource is key to the term 'script.' I think of a script as a relatively simple program that is invoked, accomplishes one task, and then ends without interaction. "Erase duplicate files in folder X" and "send me an email listing all files added today" are examples of scripts you might run as a cron job or in response to an event (like free space dropping below some level). Lambda is close enough to this that I think "Lambda's where you store scripts and define when they get run" is a reasonable explanation.
It is nothing like an FTP. It is more of a database than a file storage now days. You can literally now use SQL to query data stored in S3 (S3 Select), and S3 is literally used as a database when you store JSON or CSV files. Which if this is all you have the costs are virtually non existent - but no body thinks about S3 this way. I personally had countless clients and developers use it as a FTP and be scared to make thousands of queries a sec - thinking they are dealing with a hard drive.
This type of thinking limits you for no good reason.
Yes, AWS is wast and complicated - and sure you need a starting point - but you need to be careful when you try to simplify AWS to much, because you'll limit yourself and other from taking advantage of what AWS can actually do for you.
All those abbrevations should be written out on that webpage.
- Amazon Transactional Email vs Simple Email Service (SES)
- Amazon Queue vs Simple Queue Service (SQS)
- Amazon Github vs CodeCommit
Some examples:
S3 as "Amazon Unlimited FTP Server": S3 has nothing to do with the FTP protocol.
VPC as "Amazon Virtual Collocated Rack": VPCs don't have anything to do with either collocation (they can span AZs), much less physical racks.
Lambda as "AWS App Scripts": really disagree with this one. Their intent is to be microservices or event handling functions, not scripts. "Scripts" isn't really descriptive but usually implies a manually invoked automation that modifies some kind of stateful resource (such as files). Lambda is basically the exact opposite.
There are lots more that are problematic or overly simplified as well.
I don't say this to crap on the effort, just... be careful if you're relying on this for your understanding of what AWS does.