2024-09-13-TIL
2024-09-13-TIL
Today I Learned
Session
실제로 아파치 톰캣이나 서버에서 세션은 어떻게 구현되어 있을까? DBMS에서도 그렇고 그냥 단순히 해시맵의 형태라고 이해하면 될까?
Tomcat vs Netty
FinOps
요즘 애플리케이션 코드나 API 통신 등 아키텍처 설계를 통한 통신 비용의 최적화는 많이 고도화 되어있다. 하지만 클라우드 자원을 많이 사용하면서 비용을 최적화 함에 있어서 좀 더 고도화가 필요한 시기이다. 이와 관련된 용어가 바로 FinOps이다.
FinOps는 재무(finance)와 DevOps의 합성어로, IT, 재무, 비즈니스 팀이 협업하여 클라우드에 재무적 책임을 부여하고 속도, 비용, 성능 간의 균형점을 조정할 때 정보에 입각한 데이터 기반 의사 결정을 내려야 한다는 점을 강조합니다.
쉽게 말해, 클라우드 엔지니어와 재무 담당자 간의 협업을 통해 돈을 아껴보자는 것이다. -> 라고 말할까봐 IBM에서 부연 설명을 해 놓았다.
FinOps의 역할이 단순히 클라우드 지출을 절약하는 것뿐이라고 오해하는 사람도 있습니다. 실제로는, FinOps는 방해 요소를 제거하고, 엔지니어링 팀이 더 나은 기능, 앱, 마이그레이션을 더 빠르게 제공할 수 있도록 지원하며, 투자 대상과 시기에 대한 부서 간 소통을 활성화하는 데 중점을 둡니다. 때때로 기업은 허리띠를 졸라매기로 결정할 수 있습니다. 때로는 더 많은 투자를 결정할 수도 있습니다. 하지만 FinOps를 사용하면 팀은 지출 결정을 내리는 이유를 알 수 있습니다.
나는 이러한 컨셉을 보면서 큰 맥락에서는 DDD와 비슷한 느낌을 받았다. DDD도 도메인 관련 전문가와 개발자가 같은 언어를 사용하면서 최대한 도메인에 가깝게 애플리케이션을 설계하는게 핵심이라면, FinOps는 DevOps 엔지니어와 재무 담당자 간의 공통 언어를 사용하는게 핵심이다. 결국, 문과 + 이과의 대통합이 회사의 미래이다. 그리고 그 통합의 언어가 필요한 것이다.
FinOps is an operational framework and cultural practice which maximizes the business value of cloud, enables timely data-driven decision making, and creates financial accountability through collaboration between engineering, finance, and business teams.
FinOps Foundation Technical Advisory Council Updated: December 2023
Today I Read
안 그래도 요새 회사에서도 FinOps 관련해서 비용절감 작업에 한창인데, “Trie Hard” 라는 도구를 통해서 컴퓨팅 파워를 1%나 절약할 수 있다고 한다. 여기에서 특이한 점은 HTTP 헤더 자체를 튜닝했다는 점이다. 비록 애플리케이션 코드 작업을 통한 최적화에 비해서 효과가 미미하지만 티끌 모아 태산이라고 설명하고 있다.
Optimizing functions and writing new data structures is cool, but the real conclusion for this post is that knowing where your code is slow and by how much is more important than how you go about optimizing it. Take a moment to thank your observability team (if you’re lucky enough to have one), and make use of flame graphs or any other profiling and benchmarking tool you can. Optimizing operations that are already measured in microseconds may seem a little silly, but these small improvements add up.
Trie Hard는 대략 어떻게 동작하는가? 상세한 내용은 깃허브에서 확인할 수 있다.
Trie Hard achieves its speed in 2 ways.
- All node and edge information is kept in contiguous regions on the heap. This prevents jumping around in memory during gets, and maximizes the chance of child nodes already appearing in cache.
- Relationships between nodes and edges is encoded into individual bits in unsigned integers.
시험을 준비하는 친구의 DB과목에서 B-tree 문제가 나왔다는 이야기를 듣자마자 B-tree 관련된 글이 뜬다.
크롬 브라우저에서 탭을 묶어서 관리하는 기능을 저번에 AWS에서 초빙 강연을 할 때 사용하시는 것을 봤다. 하지만 나는 아직 잘 사용하지는 못 하겠다.