[동시성 제어 - 1] Java가 제공하는 Lock
·
Language/Java
1. 동시성 제어 왜 필요한 것일까?한정된 자원을 가장 효과적으로 사용해 낭비를 줄이는 경제적 효율성의 원리는 어김없이 서버에도 적용된다. 수 백, 수 천만에 이르는 사용자들의 요청을 1:1로 순차적으로 대응하는 것은 극히 비효율적이고 생산성이 떨어지기 때문에, 요청에 유연하게 대응하기 위해서는 '동시성'은 필연적으로 수반되어야 한다. 요청에 최적의 응답시간을 보장하기 위해 클라이언트 요청마다 스레드를 할당하거나 비동기 / 논블로킹 IO를 사용할 수 있는데, 이 때 공유자원(shared resource)에 대하여 서로 다른 두 스레드가 동시에 조회, 수정하는 일이 발생할 수 있다. 만약 공유 자원에 대한 접근을 제대로 제어하지 않는다면 API의 멱등성이 깨지고, 원치 않는 결과와 장애를 만들어낼 수 있기..
Rust를 시작하면서
·
Language/Rust
들어가며 회사 사내스터디를 통해서 Rust 라는 언어에 대해 알게되었고, 올해의 목표 중 하나로 Rust 언어에 대한 기본기를 익히고 가벼운 프로젝트를 만들어 보는 것을 계획하게 되었다(회고록은 이번주 주말에 마무리하는 걸로). 구체적인 새 언어를 시작하고자 하는 배경은 회고록에서 기재하는 것으로 하고 그렇다면 왜 Rust를 공부해야겠다고 다짐했는지를 적어보고자 한다. 우선 긴 말 필요없이 StackOverflow 설문조사 자료를 통해 확인할 수 있었던 것은 Rust가 7년 연속 가장 개발자들에게 사랑받는 언어라는 것이다. 7년 그것도 무려 7년이나!🤨 작년 말 드넓은 개발세계를 맛본 뒤로 굉장히 스스로를 우물 안 개구리라고 생각하게 되었고, 현실에 안주하는 삶을 살아오고 있었다는 것을 느끼게 되었었다...