Tech News

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

망나니개발자 2024. 3. 1. 10:00
반응형

 

 

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


스칼라 관점에서 바라본 코틀린: Advent of Code 2023

  • 코틀린은 원칙적이기보다 실용적임
    • 변경가능성은 상당히 쉽고, 불변성은 어려움
    • Null에 대한 두려움이 거의 없음
    • 제네릭 타입의 추상화에 대해 전문적인 기능을 제공해줌
    • 최소한의 패턴 매칭
  • 신세대 언어임
    • 많은 기능들이 보다 개선된 상태임
    • 하지만 스칼라에만 있는 부족한 기능도 있음
    • 그럼에도 불구하고 필요한 대부분의 기능을 갖추고 있음


출처: https://medium.com/@w.pitula/kotlin-from-scala-perspective-advent-of-code-2023-f2901863ba0e

 

 

 

구글(Google)에서 가장 성공적인 팀들의 5가지 특징

  • 팀을 “심리적 안전지대”로 만듬
    • "우리 팀에 모든 사람들은 인간 관계상의 리스크로부터 완벽하게 안전하다”는 믿음
    • 팀원 누구라도 자신의 아이디어나 이야기, 질문 등으로 인해 자신이나 타인이 심리적으로나 물리적으로 불이익을 받지 않는다는 확신
  • 팀원들 사이에 높은 상호의존성이 존재함
    • 모든 팀원들은 각자의 업무를 기한 내에 높은 수준의 성과를 내며, 한 사람이라도 자신의 책임과 주어진 역할을 느슨하게 하면 팀 전체가 어려움을 겪게 됨
    • 팀원들이 우리는 팀으로써 효과적(Effective)이라는 믿음을 갖는 팀 문화를 만들어가는 노력이 필요함
  • 팀 내에 구조와 명확성을 가지고 있음
    • 팀 리더는 팀원들을 업무 진행과 성과를 세심하게 모니터링하고 있지만 일일이 간섭하는 마이크로 매니징을 하지는 않음
    • 팀과 팀원 각자의 역할과 책임, 목표와 계획을 팀원들의 합의를 통해 명확하게 정의하고, 이러한 구조적 체계를 통해 팀이 운영됨
  • 각각의 팀원들에게 충분한 의미를 부여함
    • 팀원 각자의 역할과 책임, 목표와 계획들을 팀원 한사람 한 사람에게 명확하게 소통되게 하고 개인적으로는 깊은 공감을 얻음
    • 그렇게 되지 않으면 팀원은 충분한 잠재력을 발휘하지도 새로운 한계에 도전하지도 않게 됨
  • 그 무엇보다는 그들만의 좋은 목적을 공유함
    • 성공적인 팀은 팀 스스로에게 "우리가 중요한 일을 하고 있다는 것을 모든 팀원들이 근본적으로 믿고 있는가?"라는 질문을 지속적으로 함
    • 팀원들 개개인이 우리 팀이 하는 일이 정말로 가치 있고 의미 있는 목적을 이루어 간다는 사실을 날마다 느낄 수 있다면, 개개인의 최고의 잠재력이 발휘 될 것이고 팀으로써의 놀라운 창조적 시너지도 만들어질 것

 

출처: https://m.blog.naver.com/summerxmas/220546882694

 

 

 

실행 시간 효율을 위한 클래스 데이터 공유(CDS)와 Layered Jar

  • 순간 급증하는 트래픽에 대응하기 위해서 초기 시작 문제가 대두되고 있음
  • JVM 애플리케이션의 초기 시작 문제를 해결하는 여러 문제가 있음
    • GraalVM Native Image
    • Checkpoint Restore: Project CRaC
    • Project Leyden
  • Project Leyden
    • 애플리케이션 클래스 데이터 공유(application class-data sharing) 기능은 OpenJDK 12버전부터 제공된 기능임
    • 스프링 프레임워크(Spring Framework) 6.1.3 버전에서 정식 지원을 시작함
  • Layered-jar
    • Jar 파일의 압축을 풀어서 계층 형태로 분배하고 도커(Docker)로 복사하면, 도커 내 개별 레이어를 가짐
    • Layered-jar는 스프링부트 2.3 이후 버전부터 정식 지원됨

 

출처: https://netmarble.engineering/class-data-sharing-cds-and-layered-jar/

 

 

 

시스템의 시계에 대하여

  • 대부분 프로그래머는 시계가 일정하게 순차적이라는 정신 모델을 갖고 있음
  • 시스템의 시계에서 값을 얻는 프로그램이 같은 값을 두번 얻을 수는 있지만 이전보다 작은 값을 얻을 수는 없다는 생각
  • 하지만 이는 사실이 아니며 가상 머신에서는 더 심각해질 수 있음
  • 결국 OS의 시계를 믿으면 안되고, 자체 NTP 서버 같은 외부 시계를 이용해야 함

 

출처: https://twitter.com/John_Grib/status/1760869233544859991

 

 

 

상반된 시스템 설계 사례(인스타그램 vs 핀터레스트)

상반된 시스템 설계 사례, 우리가 만드는 서비스 성향에 따라 고려되어야 함

  • 인스타그램
    • 단순하게 만들었다가 장애들을 거치며 아키텍처를 확장함
    • 인그타그램에서는 처음에 확장을 고려했어야했다고 회고함
  • 핀터레스트
    • 빠르게 확장성을 고려해서 만들었다가 단순하게 변경함
    • 핀터레스트는 미리 확장을 고려하지 말았어야했다고 회고함

 

출처: https://twitter.com/golbin/status/1731269398663762197?t=f8zeZlkDWMjdomW5UirTWQ&s=09

 

 

 

 

 

 

 

반응형