Tech News

[TechNews] 유용한 개발 관련 아티클 및 영상 #22

망나니개발자 2024. 5. 31. 10:00
반응형



1. 유용한 개발 관련 아티클 및 영상 #22


코루틴 입문용 영상(비동기로부터 우리를 구원해줄 코루틴)

  • 코루틴에 대하여
    • 비동기 프로그래밍을 위한 동시성 프로그래밍 라이브러리
    • 코루틴은 기존 서브 루틴과는 다르게 루틴에서 빠져나오는 탈출구가 여러 곳이 존재함
    • 따라서 비동기 프로그래밍에서 탈출구를 통해 다른 작업을 할 수 있으며, 결과가 반환되면 다시 와서 작업하는 방식으로 동작함
    • 이를 통해 동기 방식의 코드로도 연속적인 작업이 가능해짐
  • 코루틴의 장점
    • 코루틴은 스레드 위에서 작업을 처리하는 경량 스레드임
    • 코루틴은 JVM Heap 영역에 생성되며, 스레드의 메모리 공간을 사용하기 때문에 컨텍스트 스위치 비용이 상대적으로 적음
  • 코루틴 스코프
    • 코루틴 스코프는 생명주기를 관리하는 개념으로, 코루틴의 실행을 구조화하고 실행되는 컨텍스트를 제공하여, 코루틴의 수명 관리를 용이하도록 사용됨
    • 구조적 동시성은 코루틴의 생명주기를 해당 코루틴을 시작한 스코프 생명주기에 연결시키는 개념임
    • 이로 인해 코루틴이 시작된 스코프가 자동으로 모든 코루틴이 취소되거나 완료될 때까지 기다려서 리소스 누수 방지나 예상치 못한 시점에서 실행되는 것을 막아줌
  • 코루틴 디스패처
    • 서버 사이드의 다양한 작업들에 맞게 효율적으로 작업을 처리하기 위한 스코프
    • 디스패처는 스레드 풀을 보유하고, 연산에 최적화된 스레드 풀을 관리함

 

출처: https://www.youtube.com/watch?v=w_kRlfhNb3c

 

 

 

static의 오해와 진실(feat. k6, VisualVM)

  • static 변수나 메서드는 두 영역 중 Metaspace 영역에 저장됨
  • static 변수나 메서드는 속한 클래스와 같은 생명주기를 가는데, 해당 클래스가 로드될 때 Metaspace 영역에 저장되고, 언로드될 때 GC의 대상이 되어 메모리가 해제됨
  • JVM에서 클래스를 언로드하는 경우는 매우 드물기 때문에 계속 메모리를 차지하고 있는 것임
  • static 키워드가 참조하는 인스턴스들은 계속 Heap 메모리를 차지하고 있으므로 사용을 주의해야 함

출처: https://velog.io/@jeong_hun_hui/static의-오해와-진실feat.-k6-VisualVM

 

 

 

@Transactional(readOnly=true) 속성에 관하여

  • MySQL의 경우, @Transactional(readOnly=true)인 상황에서 데이터를 저장하려고 하면 에러가 발생함
  • H2의 경우, @Transactional(readOnly=true)인 상황에서 데이터를 저장하려고 하면 에러는 발생하지 않고 저장은 되지 않음
  • 이는 JDBC 스펙 문서를 보면 알 수 있음
    • readOnly 플래그가 데이터를 변경하는 쿼리를 실행했음에 대한 검사를 의미하지 않음
    • 대신 성능 최적화를 위해 JDBC 드라이버에게 힌트를 전파하기 위해 전달되는 것임

 

 

 

S3 비용에 관한 일화

  • 어떤 개발자가 작업 중 S3 버킷을 만들어 두었는데, 며칠 뒤에 S3 PUT 요청으로 인해서 1,300 달러의 비용이 나왔음
  • 확인해보니 어떤 오픈소스 프로젝트에서 백업용 버킷으로 지정한 기본 버킷 이름이 하필 이 사람이 만든 이름과 똑같았고, 해당 오픈소스를 가져다가 추가 설정없이 사용한 사람들의 모든 요청이 이 버킷으로 들어왔음
  • 물론 권한이 없으니 이 요청은 모두 4xx 응답을 주며 접근이 거부되지만, AWS는 이러한 거부 요청에 대해서도 요금을 부과했음
  • 이 이슈는 온라인에 퍼져서 AWS에까지 전달되었고, AWS의 Chief Evangelist인 Jeff Barr는 트위터에서 이런 일은 없어야 한다며 곧 대응하겠다고 발표하며 얼마 지나지 않아 HTTP 3xx/4xx 무단 요청에 대해서는 과금하지 않도록 변경해서 발표함

 

출처: https://careerly.co.kr/comments/105128?utm_campaign=user-share

 

 

 

웹의 창시자, 팀 버너스리의 사과

  • 그는 웹 주소의 “//”가 사실 불필요하다고 고백하였음
  • 모든 주소에 //를 추가해야 했기 때문에 시간, 인쇄, 종이 그리고 저장 공간이 낭비되었음
  • 팀 버너스 리는 인터넷 주소 앞부분의 슬래시를 붙인 것에 대해 인터넷 사용자들에게 사과했음

출처: http://news.bbc.co.uk/2/hi/technology/8306631.stm

 

 

 

 

 

 

반응형