백엔드 공부 키워드

dropKick·2021년 3월 17일
0

공부 기록

목록 보기
46/67

그동안 공부했던 내용들 그리고 프로젝트들을 통해 얻었던 키워드들 중
중요했고, 다시 공부했고, 다시 공부해야하는 것들을 적었다.

  • 배민 백엔드 발췌
    • 네이티브 앱과 웹이 적절히 결합된 형태
      그렇기 때문에 각 환경이 갖는 특성과 JavaScript Interface를 비롯한 데이터 교환의 흐름, 서버와의 통신을 위한 데이터 처리 구조에 익숙하거나 잘 알아야 함
    • Java 8 + Spring + Redis + Mysql(Aurora,maria DB) + Queue(aws SNS + SQS)
      이 밖에도 모니터링, 로그 시스템, 추천/통계 시스템을 위해 InfluxDB, Kafka, Airflow, Athena, Grafana, Prometheus 등 다양한 기술을 상황에 맞게 선택
    • 배포 환경 구성과 부하 테스트, 각종 스크립트 영역까지 포함하면 더 다양해질 있는데 이런 기술들을 모두 잘하는 건 어렵습니다
      본인이 잘할 수 있는 개발 분야는 요구받은 것 이상으로 주도적으로 수행해 성취를 이뤄내고, 부족한 분야지만 책임감이 따르는 입장에서는 빠르게 학습하고 습득해 자신의 영역을 넓혀가려는 자세가 뒷받침

Spring

Spring Boot

  • DI / Container
  • AOP
  • Event handler

Spring Security

  • Spring Security filter chain

데이터 처리

  • Spring batch
    • 아직은 왜 배치 처리가 필요한지 정확히 이해되지 않음
      대용량 데이터 처리에서 중요한 부분일 것 같은데...

송인태님: 백엔드 개발자로 일하며 다양한 도전적인 과제들을 수행해왔고, 그중 주문별 라이더 배치작업 성능 개선 과제를 소개하고자 합니다.
서비스가 빠르게 성장하며 주문별 라이더 배치작업 시스템의 데이터베이스에도 영향을 주기 시작했어요. 시스템 알람을 통해 장애가 발생하기 전에 로그 및 지표들을 확인하며 두 가지 문제점을 발견하게 되었습니다.
첫 번째는 데이터를 병렬로 처리하고 있는데, 데이터양이 방대해진 탓에 사용하는 스레드 개수가 증가하고 있었고 두 번째로는 각각의 스레드들이 독립적으로 작업을 수행하여 전체 배치의 성공 여부와, 배치 작업 완료 시점을 파악하기 어려운 부분이 있었습니다.
마침, 저희가 사용하는 기술 중에 스프링 배치로 문제점을 해결할 수 있는 Partitioning 기술을 제공하고 있어서 작업을 하는 스레드수를 손쉽게 제어할 수 있었고 전체 배치 성공 여부 및 완료 시점을 파악할 수 있었습니다. 또한 파트에서 이미 사용하고 있는 기술셋을 이용함으로써 다른 개발자분이 이해하기 쉬운 구조로 만들 수 있었어요.
이 경험이 인상 깊었던 것은 제가 주도적으로 모니터링을 진행하면서 장애가 발생할 수 있었던 문제를 파악해 사용하는 기술을 조금 더 깊이 있게 학습하며 현재 상황에 필요한 사항을 반영하는 경험을 할 수 있었던 점과 팀분들이 지속적으로 리뷰하고 피드백을 주셔서 문제를 잘 해결해 나가며 더 큰 보람을 느꼈기 때문입니다.

  • Spring cloud

웹 인프라

  • Tomcat
    스프링부트 내장 WAS

  • Netty
    리액티브 프로그래밍, Webflux2 내장 WAS

  • Redis

분산 처리

  • kafka
  • rebbitMQ

RDB

  • Index

JDBC

  • DBCP
  • Paging
  • Dynamic Query

JPA

  • HikariCP (Connection Pool)

0개의 댓글