Observability isn’t Monitoring, and it’s useless without Analysis

Time for some buzzword bingo. Monitoring and Observability are often used interchangeably. They’re usually seen in the context of discussions about architecture and distributed systems, with Observability being touted as the “new kid on the block.” or "rebranded monitoring." It’s not new, though. Nor is it the same thing as Monitoring. Despite the typical jaded… Continue reading Observability isn’t Monitoring, and it’s useless without Analysis

You Aren’t Just a Developer, You’re a Polyglot

And that doesn't mean you can write both Java and C#. Software development as a craft is an exercise in being multilingual. The most primitive view (read: outmoded) of a software engineer doing their job is someone who rolls into work at 10:30 am, just in time for standup. Right after our Socially Compulsory Run-on… Continue reading You Aren’t Just a Developer, You’re a Polyglot

Stop committing secrets

Anything that is secret or varies per environment is configuration (though not all configuration is secret). Configuration should never be part of the application. Therefore it doesn't belong in version control and should never be committed. Inject these arguments dynamically as part of a CI / CD workflow and never expose them to the client.… Continue reading Stop committing secrets

RIFM: AWS Key Management Service Best Practices

Whitepaper (Amazon) Whitepaper (Backup) TL;DR AWS KMS makes securing your information easy(ier) by abstracting the availability, physical security, and maintenance concerns of cryptographic implementations. Thanks to a first class integration in AWS you can benefit from tight integrations with the rest of the services they provide, all while providing exceptional logging to help meet compliance… Continue reading RIFM: AWS Key Management Service Best Practices

AWS S3 Policies List* vs Get*

TL;DR If you are are running into problems with ListObject or any other List command using the S3 SDK, make sure your policy statement specifies List at the bucket level, and Get at the object level. Wrong { "Version": "2012-10-17", "Statement": [ { "Sid": "S3Config", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::bucket-name"… Continue reading AWS S3 Policies List* vs Get*

RIFM: Best Practices Design Patterns: Optimizing Amazon S3 Performance

Whitepaper (Amazon) Whitepaper (Backup) TL;DR If you walk away with anything, it should be this: Amazon S3 can handle whatever you throw at it, as long as you follow the rules. It can be as fast as you need (3,500 PUT/COPY/POST/DELETE and 5,500 GET/HEAD requests/second/prefix), scales horizontally seamlessly across a wide pool of IP addresses… Continue reading RIFM: Best Practices Design Patterns: Optimizing Amazon S3 Performance