Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

기술 뉴스 #187 : 21-12-01

웹개발 관련

  • Remix : 웹의 기초와 인터페이스에 집중할 수 있게 해주어서 더 좋은 웹사이트를 만들 수 있게 해준다는 Remix의 v1 안정 버전이 공개되었다. Web Fetch API를 이용하므로 어디서나 동작할 수 있으면 당연히 브라우저뿐 아니라 Node.js 환경에서도 동작할 수 있다. 다른 웹앱과 달리 컴포넌트 안에서가 아니라 병렬로 데이터를 불러오므로 페이지를 빨리 불러올 수 있고 로딩 메시지를 보지 않아도 된다고 하고 있다.(영어)
  • Creating Airbnb’s Page Performance Score : Airbnb에서 페이지의 성능을 Web, iOS, Android의 모든 플랫폼의 실사용자로부터 측정해서 0~100점으로 평가한 성능 점수(Page Performance Score)를 만드는 과정을 설명한다.(영어)

    • 처음 성능을 추적할 때는 Time To Airbnb Interactive(TTAI)라는 인터랙트를 하는 시간을 측정하는 지표를 사용했다. 좋은 효과도 많았지만 인터랙트를 정의하기가 어려웠고 TTAI는 좋은데 엔게이지먼트를 떨어지는 문제도 있었고 하나의 지표로 모든 걸 담을 수가 없었다.
    • 그래서 하나의 숫자로 성능을 볼 수 있는 Page Performance Score(PPS)를 만들었다.
    • 모든 매트릭을 "초기 로딩 매트릭"과 로드 후 반응성을 보는 "페이지 로딩 매트릭"으로 나눌 수 있다.
    • 모든 매트릭 측정을 플랫폼의 특성에 맞게 하고 점수를 내기 위해 웹과 네이티브의 매트릭 가중치를 다르게 주었다.
  • Netlify Drop : HTML, CSS, JavaScript 등 정적 파일이 있는 폴더를 Netlify 사이트에 드래그 앤 드롭하면 바로 웹사이트를 배포할 수 있는 Drop 기능이 추가되었다.(영어)

그 밖의 개발 관련

  • OpenAI’s API Now Available with No Waitlist : GPT-3를 악용을 막기 위해 그동안 API의 사용이 허가된 사용자만 사용할 수 있었는데 그사이에 보호장치를 만들어서 이제 지원국가의 사용자는 가입만 하면 GPT-3의 API를 사용할 수 있게 되었다. 한국도 지원 국가에 포함되어 있어서 가입만 하면 되고 API는 콘텐츠 가이드라인하에서만 사용해야 한다.(영어)
  • Fleet에 오신 것을 환영합니다! : IDE를 만드는 JetBrains에서 가벼운 에디터 Fleet을 발표했다. Fleet에는 JetBrains의 노하우가 담아있어서 다중 언어를 지원하고 분산형이라 코드 처리만 다른 시스템에서 실행되게 한다거나 하는 것이 가능하며 세션을 공유해서 다른 사람과 협업할 수 있게 설계되었다고 한다. 현재는 클로즈베타로 선정된 사람만 사용해 볼 수 있고 사이트에서 조기 테스트를 신청할 수 있다.(한국어)
  • ZGC, The Z Garbage Collector : Java에서 G1보다 짧은 지연시간을 가지면서 처리량은 크게 뒤처지지 않는 목표로 만들어진 ZGC에 관해 번역/정리한 글이다. ZGC는 정지 시간이 10ms를 초과하지 않아야 하며 수 TB까지의 heap을 처리할 수 있어야 하면 JDK 11부터 실험적으로 도입되어 옵션을 지정해서 사용할 수 있다.(한국어)
  • GitHub Actions: reusable workflows is generally available : GitHub Actions에서 여러 저장소에 걸쳐서 반복적으로 사용하는 워크플로우를 복사 붙이기로 만드는 대신 공동으로 사용할 곳을 만들어 두고 저장소의 워크플로우 YAML을 바로 지정해서 사용할 수 있는 방법이 추가되었다. 워크플로우의 uses: my-org/actions/.github/workflows/node.js.yml@1처럼 지정해서 재사용할 수 있다.(영어)

인프라 관련

  • Introducing Prometheus Agent Mode, an Efficient and Cloud-Native Way for Metric Forwarding : Prometheus가 많이 쓰이고 있는데 새로운 운영 모드인 "Agent"를 설명하는 글이다.(영어)

    • Prometheus는 Pull 방식으로 메트릭을 수집하는데 설계는 달라지지 않았지만 클라우드 네이티브가 발전하면서 클러스터 자체를 Pet이 아니라 Cattle로 취급할 수 있게 되었다.(구분하지 않는다는 의미)
    • 엣지 네트워크의 발전으로 작은 클러스터가 사방에 퍼지게 되어 글로벌 수준으로 매트릭을 수집해서 보여주어야 하게 되었는데 이를 Global-View라고 부른다.
    • Global-View를 위해 원격 네트워크를 통해 스크래핑하거나 애플리케이션에서 바로 Push하는 것은 나쁜 접근이다. 둘 다 신뢰하기 어렵고 많은 문제가 발생할 수 있다.
    • Prometheus는 글로벌뷰를 위해 3가지 접근을 지원하는데 Federation, Remote Read, Remote Write이다.
    • Remote Write는 Prometheus가 수집한 매트릭을 원격으로 포워딩하는 프로토콜이다. 이를 통해 글로벌뷰의 매트릭을 중앙에 저장할 수 있고 이는 관심사도 분리할 수 있게 해준다.
    • 앞에서 Push 방식은 나쁘다고 하지 않았는가? Remote Write의 놀라운 점은 애플리케이션에서 매트릭을 수집할 때는 여전히 Pull 방식을 사용한다는 것이다.
    • 다음 릴리스인 Prometheus v2.32.0에 실험적인 --enable-feature=agent 플래그가 추가되고 에이전트 모드는 remote write에 맞게 Prometheus를 최적화시킨다.
    • 에이전트 모드는 write가 성공하면 데이터를 즉시 지우기 때문에 효율적이고 ingestion의 수평적 확장을 쉽게 할 수 있게 한다.
    • 에이전트 모드로 Prometheus 기반 스크래핑의 자동확장 기능을 쉽게 적용할 수 있다.
  • Python x ARM: Graviton2 실전 도입기 : AB180 백엔드 팀에서 인스턴스 비용을 줄이기 위해서 ARM 기반의 AWS Graviton 인스턴스로 넘어갈 수 있는지를 테스트하고 자사의 트래킹 서버를 ARM으로 넘어갈 수 있는지 확인하기 위해서 사용하는 패키지 중에 ARM으로 빌드할 수 없는 것을 직접 빌드해서 해결했다. 프로덕션에 적용하기 위해서 Docker 멀티아키텍처를 시도했으나 너무 빌드 시간이 오래 걸려 단일 아키텍처로 가기로 하고 직접 빌드한 파이썬 패키지를 위해서 파이썬 인덱스를 구축하고 ARM 빌드를 위해 AWS COdeBuild에서 ARM 기반의 컨테이너를 사용하도록 마이그레이션 했다고 한다. 성능이 10%가량 향상되었지만, 빌드 타임과 복잡도가 증가한 것은 단점이라고 한다.(한국어)
  • GitOps Secret 관리 : GitOps를 할 때 시크릿은 Git 저장소가 넣을 수가 없으므로 이 부분을 따로 관리해야 하는데 이 부분을 해결하기 위해서 SealedSecret을 이용하는 방법을 설명한다. SealedSecret의 인증서로 시크릿 데이터를 암호화해서 Git 저장소에 커밋하면 Kubernetes 클러스터에 적용될 때 SealedSecret 컨트롤러가 암호화된 값을 복호화해서 Kubernetes Secret으로 만들어준다.(한국어)
  • Amazon Linux 2022 : AWS의 Amazon Linux의 새 버전 AL2022의 프리뷰가 공개되었다. AL2022부터 2년마다 메이저 버전을 발표하고 5년 동안 장기지원(LTS)을 한다.(영어)
  • AWS price reduction for data transfers out to the internet : 12월부터 CloudFront의 첫 1TB의 데이터 전송과 1천만 HTTP/S 요청, 2백만 CloudFront Fucntion 호출이 무료가 된다고 한다.(영어)
  • AWS re:Invent 주요 출시 소식 요약 전체 보기 : 11월 29일부터 12월 3일까지 미국 라스베이거스에서 진행 중인 re:Invent에서 출시된 기능을 요약한 글이다. 너무 많은 기능이 나오고 있어서 다 정리하긴 어렵지만 Kubernetes 클러스터 오토스케일러인 Karpenter, CloudWatch에서 실제 사용자를 모니터링할 수 있는 기능인 RUM 등이 눈에 띈다. 아직 전체 글이 한국어로 번역되진 않았다.(한국어)

볼만한 링크

  • The 2020 State of the Octoverse : GitHub가 매년 공개하는 리포터인 Octoverse의 2021년 버전이 공개되었다. 이번에는 4백만 개 이상의 저장소의 텔레메트리와 만2천 명의 개발자 설문을 합쳐서 정리한 리포터이다. 이번 리포트는 다음 3가지 분야로 나누어져 있고 부분마다 데이터가 의미하는 것과 어떻게 사용할 수 있는지를 설명하고 있다.(영어)

    • 더 빠른 코드 작성과 배포: 더 효율적으로 일하기 위해서 생산성 향상이나 업무 환경, 자동화 등의 현황이 정리되어 있다.
    • 개발자를 지원하는 문서 생성: 문서가 있을 때 생산성에 어떻게 영향을 주는지가 정리되어 있다.
    • 지속가능한 커뮤니티: 커뮤니티의 좋은 문화가 무엇이고 어떻게 영향을 주고 있는지를 보여준다.
  • 퇴고의 기술 #기술문서작성법#개발자글쓰기 #테크니컬라이터 : 글을 쓰고 다시 살펴보며 수정하는 퇴고는 글쓰기에서 중요하지만, 사람은 아는 내용의 경우 눈을 100% 사용하지 않기 때문에 효과적으로 하기가 어려우므로 몇 가지 팁을 제공하고 있다.(한국어)

    • 내 글을 낯설게 하기 위해 소리 내 읽거나 일정 시간 뒤에 읽거나 종이로 프린트해서 읽어 볼 수 있다.
    • 다른 사람이 읽고 피드백을 줄 수 있는 피어리뷰를 도입하는 것은 아주 효과적이다.
    • 퇴고에서 공통으로 확인해야 항목은 체크리스트로 만들어서 관리하는 것이 좋다.
    • 퇴고 시에는 문장은 단문으로 정리하고 불필요한 표현을 제거하고 대명사 대신 직접 대상을 언급하면서 논리적으로 구성하는 게 좋다.

IT 업계 뉴스

프로젝트

  • RedisJSON : Redis에서 새로운 도큐먼트 스토어인 RedisJSON을 공개했다. 이는 RediSearch 기반이며 실시간 도큐먼트 스토어로 JSON 타입을 사용해서 쿼리와 풀텍스트 서치를 지원한다. Redis 측에 의하면 MongoDB와 ElasticSearch보다 더 빠르고 실시간 업데이트가 검색과 읽기에 영향을 주지 않는다고 한다.(영어)
  • Dev Lake : GitHub, Jira 등의 도구를 연결해서 데이터를 수집한 뒤 이를 시각화해서 사용할 수 있는 데이터 레이크 및 대시보드

버전 업데이트

2021/12/01 09:01 2021/12/01 09:01