22.11.6 ~ 11.13

유수민·2022년 11월 14일
0

인사이트

목록 보기
2/15
post-thumbnail

일주일간 나의 흥미를 끈 인사이트는??

📌목록


📌감상

1. MySQL Batch Update 성능 측정 및 분석

Batch Update란 말은 잘 모르지만 MySQL이라는 아는 단어가 나와서 반가운 마음에 글을 읽게되었다. 글을 읽어보니 대량 업데이트에 대한 내용을 담고 있었다. 즉, batch update는 데이터를 실시간이 아닌, 일괄적으로 모아서 수정하는 것을 의미한다. 대량 업데이트를 하는 방법은 JPA를 이용하거나 Exposed를 이용하는 방법으로 2가지가 있다고 한다. 속도차이비교 대상은 JPA의 Dirty Checking Update, JPA의 ID 기반 업데이트 , Exposed의 일반 업데이트와 Exposed의 addBatch를 통한 업데이트로 총 4이다. 결론적으로 Exposed의 Bulk update가 가장 빠르다고한다. 즉, JPA는 대량 처리에 대한 도구로 적절하지 않다는 의견을 내었다. 현재 JPA에 대해 공부하고 있는 입장으로써 만능이라고 생각했던 JPA를 다시 보게 되는 글이었다.

2. 함수형 프로그래밍이 소프트웨어 개발의 미래가 되어야 하는 이유

C++을 통해 알고리즘 공부를 통해 함수형 프로그래밍을 직접 해보았다고는 하지만 아직 '함수형 프로그래밍이 좋은 가'에 대해서는 아직도 의문이다. 이 글을 통해 여러 개발자들이 생각하는 함수형 프로그래밍에 대해 알게된 글이었다.

3. 웹어셈블리(Wasm)가 클라우드 컴퓨팅의 미래인 이유

웹어셈블리란 C나 C++와 같은 프로그래밍 언어를 컴파일해서 어느 브라우저에서나 빠르게 실행되는 바이너리 형식(0과 1로 이루어진 이진 형식)으로 바꿔주는 기술이라고 한다. 정확히 웹어셈블리가 무엇이고 어디에 사용되는지 잘 몰라서 어셈블리에 대해 작성한 글을 찾아보았다.

4. 웹 서버와 WAS(Web Application Server)

이 글을 보기 전까지 난 웹서버(WS)와 WAS의 차이를 전혀 알지못했다. 두개 다 http기반으로 동작하나 ws는 정적인 데이터(예.html)을 처리하고 was는 동적인 데이터를 다루기 때문에 DB와 연결되어 사용자와 데이터를 주고받고, 조작이 필요할때 was를 다룬다고 한다. 따라서 각 역할에 따라 두가지를 같이 사용한다고 한다. 즉, was는 db조회 및 다양한 로직을 처리하는데 집중하고 ws에게는 정적콘텐츠를 맡김을 통해 기능을 분리해 서버 부하를 방지한다고 한다. 이런 차이를 이제서야 알았다니,,, 지금이라도 알아서 다행이다!

5) NSA, 메모리 안전문제로 C/C++ 대신 C#, Go, Rust 등의 언어를 권장하는 지침 발표

제 2의 언어를 코틀린, 제 3의 언어를 c++로 정했는데 C#,GO,Rust를 권장하라고 발표하다니... 충격이 아닐수 없다

6) Redis를 활용한 다양한 시스템 설계(개발자스럽다)

글에서 나온 활용도를 보면

  • Rate limit (하루에 한번만 참여 가능한 이벤트 기능, 대기시간 주기)
  • 인증 문자를 받고 나서 다음 인중 문자를 받으려면 1분의 대기시간 주기
  • 실시간 랭킹 시스템
  • 좋아요 기능
  • 최근 본 상품 목록
  • Job Queue (메인 로직과 별개로 실행되어야 하는 기능)
  • 선착순 이벤트 ( 선착순 인원확인 및 중복 참여 여부 확인 기능으로 원자성 보장)
  • 쿠폰 이벤트 ( 발급여부 확인, 발급 실행 )
  • 웹소켓 서버 클러스터링
  • 분산락 (Redlock)
    redis를 안써본 나로써는 굉장히 흥미롭고 재밋는 글이었다. 이래서 redis를 사용하는 구나라는 간접적인 체험을 하는 느낌이라 너무 좋았다.
    redis : 키 값기반의 인메모리 데이터 저장소로, 키값 기반이라 쿼리가 필요없어서 결과를 바로 가져올 수 있고 디스크가 아닌 메모리에서 데이터를 처리하기 때문에 속도가 빠르다는 장점이 있다.

7) 대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략

마이크로서비스 구조를 구성해본 기억이 있던 터라 관심이 가서 읽게된 글이었다.
아직은 많이 배워야할 때라 글의 모든 내용을 이해하지는 못했지만 코어 서빙 레이어와 같은 작동 방식을 읽으며(처음 접해서 어려웠다..) 마이크로서비스의 발전 방향을 보고 배울 수 있었다. 마이크로서비스 구조를 통해 데이터처리속도의 향상을 이뤘다는 점에도 흥미로웠다.

8) 캐시를 활용한 대용량 트래픽 처리 성능 향상 (쿠팡)

조금 많이 어려웠다. 캐시는 들어봤는데 캐시레이어, 캐시 클러스터??? 로컬캐시? 글로벌 캐시? 다 모른다는 것을 알았다..그래서 글과는 별개로 검색했다. http 쪽 공부가 비워져있다는 것을 깨달았다.

  • 캐시
    사용자가 한번 참조했던 정보를 캐시 저장소에 넣어두어, 다음에 똑같은 정보를 참조하고자 할 때 데이터 저장소에서 정보를 가져오는 것 보다 빠르게 정보를 제공할 수 있는 기능
  • 캐시레이어
    서버에 미리 생성된 특정 지리적 범위, 투영, 세밀도에 대해 구성된 이미지 타일의 컬렉션
  • 캐시클러스터
    클러스터를 구성하여 캐시를 통해 여러 프로세스들 간에 일관성을 유지하며 데이터를 공유하는 것
  • 로컬 캐시
    서버마다 캐시를 따로 저장하는것.다른 서버의 캐시를 참조하기 어렵다. 서버 내에서 작동해서 속도가 빠르다.
  • 글로벌 캐시
    여러 서버에서 캐시 서버에 접근하여 참조한다.별도의 캐시 서버를 이용하여 서버 간 데이터 공유가 쉽다. 로컬 캐시보다는 느리지만 데이터를 분산하여 저장할 수 있다는 장점이 있다.
    참고) https://goldfishhead.tistory.com/29
profile
배우는 것이 즐겁다!

0개의 댓글