At Compass,we're big proponents of using NPM and semver (semantic versioning) when distributing our shared components as packages.NPM provides us with an industry-standard platform to publish our internal dependencies.The tools and technologies someone learns while working on a package at Compass are the same ones they'll use in projects in the open source community.Meanwhile,semantic versioning itself plays a huge role in providing peace of mind.Users of shared components know when updates are safe enough to upgrade to,and component authors can make big updates without the fear of silently breaking the contracts they've made with their users.We wanted to build out a way to provide these same benefits to more than just JS libraries,and we ended up creating a lightning-fast form of semantic versioning for our CSS implementation that utilized Lambda@Edge,NPM,and some clever work by our engineers.
AWS Lambda Amazon CloudFront npm #lambdaatedge #semver #serverless
GitKrakenis the best git client so far.The user interface is very friendly.Everything is easy to do with this tool.A branch tree vizualization is very clear.I've triedSourceTreeand I got lost in such many panels.Also performance ofSourceTreeis not as goot asGitKraken.I likeSublime Mergebut it doesn't have so many features as the other tools.I've choosenGitKrakenand as bonus I got GitKrakenGlothat is the next perfect tool.
Uploadcare has built an infinitely scalable infrastructure by leveraging AWS.Building on top of AWS allows us to process 350M daily requests for file uploads,manipulations,and deliveries.When we started in 2011 the only cloud alternative to AWS wasGoogle App Enginewhich was a no-go for a rather complex solution we wanted to build.We also didn't want to buy any hardware or use co-locations.
我们的栈处理接收文件,communicating with external file sources,managing file storage,managing user and file data,processing files,file caching and delivery,and managing user interface dashboards.
At its core,Uploadcare runs onPython.The Europython 2011 conference in Florence really inspired us,coupled with the fact that it was general enough to solve all of our challenges informed this decision.Additionally we had prior experience working in Python.
We chose to build the main application with Django because of its feature completeness and large footprint within the Python ecosystem.
All the communications within our ecosystem occur via several HTTP APIs,Redis,Amazon S3,andAmazon DynamoDB.We decided on this architecture so that our our system could be scalable in terms of storage and database throughput.This way we only need Django running on top of our database cluster.We usePostgreSQLas our database because it is considered an industry standard when it comes to clustering and scaling.
One important decision for delivering a platform independent solution with low memory footprint and minimal dependencies was the choice of the programming language.We considered a few fromPython(there was already a reasonably large Python code base at Thumbtack),toGo(we were taking our first steps with it),and evenRust(too immature at the time).
We ended up writing it inC.It was easy to meet all requirements with only one external dependency for implementing the web server,clearly no challenges running it on any of the Linux distributions we were maintaining,and arguably the implementation with the smallest memory footprint given the choices above.
Sentry's event processing pipeline,which is responsible for handling all of the ingested event data that makes it through to our offline task processing,is written primarily inPython.
For particularly intense code paths,like our source map processing pipeline,we have begun re-writing those bits inRust.Rust's lack of garbage collection makes it a particularly convenient language for embedding in Python.It allows us to easily build a Python extension where all memory is managed from the Python side (if the Python wrapper gets collected by the Python GC we clean up the Rust object as well).