Posts Programming Skills 1
Post
Cancel

Programming Skills 1

Programming Skills 1


πŸ’Ώ BackEnd

일의 λ²”μœ„

μ‚¬μš©μžμ—κ²Œ λ³΄μ΄λŠ” μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 개발뿐만 μ•„λ‹ˆλΌ 데이터 뢄석을 μœ„ν•œ μ—”μ§€λ‹ˆμ–΄λ§, λΆ„μ‚°μ‹œμŠ€ν…œμ΄λ‚˜ DBMS와 같은 μ œν’ˆμ„ λ§Œλ“œλŠ” κ°œλ°œμžλ“€λ„ λ°±μ—”λ“œμ— 속함

  • κ·Έ λŒ€μƒμ΄λ‚˜ ν•˜λŠ” 일이 μƒλŒ€μ μœΌλ‘œ λͺ¨ν˜Έ
    • μ„œλ²„κ΄€λ¦¬
    • DB관리
    • ν”„λŸ°νŠΈμ—”λ“œ κ°œλ°œκΉŒμ§€λ„ λ‹΄λ‹Ή
  • λ°±μ—”λ“œ κ°œλ°œμžλŠ” 폭넓은 κΈ°μˆ μ„ μ ‘ν•  수 μžˆλŠ” 역할을 μˆ˜ν–‰
    • λŒ€μš©λŸ‰ 데이터 뢄석
    • λͺ¨λ‹ˆν„°λ§, 관리 도ꡬ
    • λ“±λ“±

보람과 고좩

  • 보람
    • μ•ˆμ •μ  효율적인 μ‹œμŠ€ν…œ 개발
    • νŠΈλž˜ν”½ 증가에도 κ²¬κ³ ν•œ μ‹œμŠ€ν…œ
    • μ„±λŠ₯의 획기적 κ°œμ„ 
    • λͺ¨λ“ˆμ˜ ꡬ쑰 κ°œμ„ μ„ 톡해 μ½”λ“œλ₯Ό μ€„μž„
  • κ³ μΆ©
    • μ„œλ²„λŠ” 쉬지 μ•ŠλŠ”λ‹€.
      • νšŒμ‹μ—λ„ λ…ΈνŠΈλΆμ„ λ“€κ³  λ‹€λ‹˜
      • λ‹Ήλ²ˆ(oncall)을 μ •ν•΄ λŒ€μ‘

πŸ’Ώ ν–₯ν›„ 전망

ν˜„μž₯μ—μ„œ λŠκ»΄μ§€λŠ” λ°”λ‘œλŠ” μš°λ¦¬κ°€ ν•΄μ•Όν•  κ³Όμ œκ°€ λŠ˜μ–΄κ°€λŠ” 속도에 λΉ„ν•˜λ©΄ 도ꡬ 등에 μ˜ν•œ 생산성 증가 μ†λ„λŠ” μ˜€λ¦¬ν˜€ λŠλ¦¬λ‹€κ³  λŠκ»΄μ§‘λ‹ˆλ‹€.

  • μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ— λŒ€ν•œ μˆ˜μš”μ™€ μœ μ§€ λ³΄μˆ˜ν•  기쑴의 μ‹œμŠ€ν…œλ„ 자꾸 λŠ˜μ–΄λ§Œ 감
  • ν˜μ‹ μ— νˆ¬μžν•  수 μžˆλŠ” μ—¬λ ₯을 가진 μ‚¬νšŒλΌλ©΄ S/W κ°œλ°œμžμ— λŒ€ν•œ νˆ¬μžλŠ” 계속 증가할 것이라고 전망
  • λ‹€λ§Œ 뢄야에 따라 ν₯망성쇄가 갈릴 수 있음
    • 예λ₯Ό λ“€μ–΄ Flash 기반의 UI κ°œλ°œμ— λŒ€ν•œ μˆ˜μš”λŠ” HTML의 λ°œμ „μœΌλ‘œ 망함
    • λͺ¨λ°”μΌμ—μ„œ Symbian OSλ₯Ό λ°”νƒ•μœΌλ‘œ κ°œλ°œν–ˆλ˜ 뢄듀은 개발 ν”Œλž«νΌμ΄ μ €λ¬Όμ–΄κ°€λŠ” λͺ¨μŠ΅μ„ μ§€μΌœλ΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.
  • ν•˜μ§€λ§Œ 개발 λΆ„μ•Όλ₯Ό λ°”κΏ€ 수 μžˆλŠ” κΈ°νšŒλ„ 많음
    • Flash -> μ›ΉFE(ActionScriptλ₯Ό 잘 μ“Έ 수 있기 λ•Œλ¬Έ)
  • 기쑴에 있던 개발 뢄야듀도 깊게 λ°œμ „ν•˜λ©΄μ„œ 이전에 μ—†λ˜ μ „λ‹΄μžκ°€ 생기고 있음
    • μƒˆλ‘œμš΄ 개발 뢄야에 적응할 수 μžˆλŠ” μ—­λŸ‰μ€ μ€‘μš”
  • μ΄λŸ¬ν•œ κ΄€μ μ—μ„œ λ°±μ—”λ“œλŠ” ν¬μš©ν•˜λŠ” λΆ„μ•Όκ°€ 많고, 이둠과 μ‹€λ¬΄κ²½ν—˜μ΄ 잘 쑰화될 수 있기 λ•Œλ¬Έ
    • RDB, TCP/IP, OS, 톡계 λ“±μ˜ 바탕이 λ˜λŠ” 지식듀은 ν•™κ΅μ—μ„œ μ€€λΉ„λ₯Ό 잘 ν•΄μ•Ό 함

λ¨Έμ‹ λŸ¬λ‹κ³Ό 빅데이터와 λ°±μ—”λ“œ

AI같은 λΆ„μ•ΌλŠ” ν•™κ΅μ—μ„œ 이둠적으둜 μ€€λΉ„κ°€ 된 뢄듀이 νšŒμ‚¬μ— λ“€μ–΄μ˜€λŠ” κ²½μš°κ°€ λ§Žμ•„ λ³΄μž…λ‹ˆλ‹€. 기쑴에 λ°±μ—”λ“œ κ°œλ°œμ„ ν•˜μ‹œλ˜ 뢄이 ν•΄λ‹Ή μ„œλΉ„μŠ€μ˜ ν•„μš”ν•΄ μ˜ν•΄ ν•΄λ‹Ή λΆ„μ•Όμ˜ μ „λ¬Έκ°€λ‘œ μ„±μž₯ν•œ κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

  • λ°±μ—”λ“œ κ°œλ°œμ„ ν•˜λ‹€ 데이터 뢄석, λͺ¨λΈλ§ 업무에 μ°Έμ—¬ν•˜λŠ” κ²½μš°λ„ 더 λŠ˜μ–΄λ‚  κ²ƒμž„
    • λ‹€λ§Œ μ§μ ‘μ μœΌλ‘œ 뢄석/λͺ¨λΈλ§μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šλ”λΌλ„ λ°±μ—”λ“œλŠ” 이λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ” κ°œλ°œμ„ ν•˜κ²Œ λ κ²ƒμž„
    • 예둜, Kafkaλ“±μœΌλ‘œ 데이터 Flowλ₯Ό 효율적으둜 μ œμ–΄ν•˜λŠ” Tool

λ‹€λ₯Έ λΆ„μ•Όλ‘œμ˜ ν™•μž₯

ν”„λ‘œμ νŠΈμ— λ”°λΌμ„œλŠ” μ„œλΉ„μŠ€/μ œν’ˆμ˜ 기획 λ‹¨κ³„μ—μ„œ 개발자의 의견이 많이 반영됨

  • κ°œλ°œμ—…λ¬΄λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ§Œλ“œλŠ” μžλ™ν™” 도ꡬ듀, λͺ¨λ‹ˆν„°λ§ 도ꡬ듀도 큰 λ°©ν–₯성을 μž‘λŠ” μ‚¬λžŒμ€ 개발자일 수 밖에 μ—†μŒ
    • λΉ„κ°œλ°œμžλ“€μ΄ μ‚¬μš©ν•˜λŠ” μ„œλΉ„μŠ€λ“€λ„ 졜근 λ“€μ–΄μ„œλ„ 개발자의 의견이 많이 반영되고 있음
    • 힐제둜 기획자, UXμ„€κ³„μž 역할을 ν•˜μ‹œλŠ” λΆ„λ“€ μ€‘μ—μ„œλ„ 개발자 μΆœμ‹ μ΄ μžˆκΈ°λ„ 함
  • 경영의 μ˜μ—­μ— κ΄€μ—¬ν•˜λŠ” 것은 개발 μ‘°μ§μ—μ„œ 쑰직μž₯이 ν•˜λŠ” μ—­ν• 
    • 개발자 쀑 μΌλΆ€λŠ” 그런 역할을 ν•˜λŠ” μ‚¬λžŒμ΄ 될 μˆ˜λ„ 있음
    • 쑰직μž₯은 기술 λΏλ§Œμ•„λ‹ˆλΌ μ‚¬λžŒ μ‚¬μ΄μ˜ 일에 관심을 깊이 κ°€μ Έμ•Ό 잘 ν•  수 μžˆλŠ” 일

λ°±μ—”λ“œ κ°œλ°œμ— ν•„μš”ν•œ 지식

  • μ›Ή μƒνƒœκ³„μ˜ μŠ€νŽ™
    • HTML, HTTP(1.1, HTTP/2)
  • κΈ°λ³Έ SDK, 라이브러리/ν”„λ ˆμž„μ›Œν¬ 이해와 ν™œμš©
  • ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μœ„ν•œ API 섀계
  • μ„œλ²„/μ»΄νΌλ„ŒνŠΈ/객체 κ°„μ˜ μ—­ν•  λΆ„λ‹΄/μ˜μ‘΄μ„±/톡신 방법 섀계
  • μ €μž₯μ†Œ ν™œμš©
    • DBMS 섀계
    • Cache 적용
      • Global/Local cahce μ μš©λ²”μœ„, Life Cycle, μ†”λ£¨μ…˜ 선택
    • 파일 μ €μž₯ μ •μ±…/μ†”λ£¨μ…˜ 선택 ν™œμš©
  • 검색 엔진 연동 방식 κ²°μ •
  • λΉŒλ“œ 도ꡬ
    • Maven/Gradle
  • 배포 μ „λž΅
  • μ„±λŠ₯ ν…ŒμŠ€νŠΈ/ν”„λ‘œνŒŒμΌλ§/νŠœλ‹
    • JVM 레벨의 νŠœλ‹(GC μ˜΅μ…˜ λ“±)
      • μ›Ή μ„œλ²„(Nginx, Tomcat)λ“±μ˜ μ„€μ •/νŠœλ‹
    • OS μ„€μ •μ˜ μ£Όμš” κ°’ 확인
  • 인접 κΈ°μˆ μ— λŒ€ν•œ 이해
    • DBMS, Front Endλ“±
  • μ„œλ²„ κ°œλ°œμžμ—λ§Œ ν•΄λ‹Ήν•˜μ§€λŠ” μ•ŠλŠ” ν•­λͺ©
    • ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±/λ¦¬νŽ™ν† λ§ 기법
    • 버전 관리 μ „λž΅
      • branch μ •μ±…λ“±

πŸ’Ώ DB

λ„€μ΄λ²„μ˜ μ„œλΉ„μŠ€μ—μ„œλ„ MySQL, CUBRID, Redis, Memchaced, HBase, MonoDB, Elasticsearch λ“± λ‹€μ–‘ν•œ μ €μž₯μ†Œλ₯Ό ν™œμš©

  • λ‹€μ–‘ν•œ μ €μž₯μ†Œκ°€ μ“°μ΄λŠ” μ‹œλŒ€μ—λ„ RDB(κ΄€κ³„ν˜•)λŠ” μ—¬μ „νžˆ κ°€μž₯ μš°μ„ μ‹œλ˜λŠ” μ €μž₯μ†Œ
  • RDBλ₯Ό 잘 λ‹€λ£¨λŠ” λŠ₯λ ₯은 λ°±μ—”λ“œ 개발자의 핡심 μ—­λŸ‰ 쀑 ν•˜λ‚˜
    • 쿼리의 호좜 νšŸμˆ˜λ‚˜ μ‹€ν–‰ κ³„νšμ΄ λΉ„νš¨μœ¨μ μ΄μ§€ μ•Šμ€μ§€ ν™•μΈν•˜λŠ” μŠ΅κ΄€μ΄ μ€‘μš”
  • ν˜„μž¬λŠ” μ„œλ²„ κ°„μ˜ λ„€νŠΈμ›Œν¬ 호좜 λΉ„μš©μ„ 쀄이기 μœ„ν•΄ ꡉμž₯히 λ§Žμ€ ν•œλ²ˆμ— μ‘°μΈν•˜λŠ” κΈ΄ SQL을 λ§Œλ“œλŠ” κ²½μš°κ°€ λ§Žμ•˜μ§€λ§Œ μš”μ¦˜μ€ λ³΅μž‘ν•œ JOIN은 가급적 ν”Όν•˜λŠ” κ²½ν–₯
    • SQL이 λ‹¨μˆœν•  수둝 λ‹€λ₯Έ μ €μž₯μ†Œ(Redisλ“±)에 μΊμ‹œν•˜κ±°λ‚˜ λΆ„μ‚°ν•΄μ„œ μ €μž₯ν•˜κΈ° μ‰¬μ›Œμ§‘λ‹ˆλ‹€.
    • λŒ€μš©λŸ‰ UGC μ„œλΉ„μŠ€μ—μ„œλŠ” RDB ν…Œμ΄λΈ” μ‚¬μ΄μ˜ JOIN은 μ΅œλŒ€ν•œ μ œμ•½μ„ ν•˜κ³  App λ‹¨κ³„μ—μ„œ μ—¬λŸ¬ μ €μž₯μ†Œμ˜ μ—°κ΄€λœ 데이터λ₯Ό μ‘°ν•©ν•˜κΈ°λ„ 함
  • Stored prodecure도 잘 μ‚¬μš©ν•˜μ§€ μ•ŠμŒ
    • DBμ•ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” 이것은 κΈ‰ν•˜κ²Œ 개발된 μ„œλΉ„μŠ€μ—μ„œ 많이 μ‚¬μš©λ¨
    • 이건 μˆ˜μ •ν•˜κΈ°λ„ νž˜λ“¬
    • DB μ„œλ²„μ˜ CPU μžμ›μ„ μ†Œλͺ¨ν•¨μœΌλ‘œμ„œ DB에 병λͺ©μ΄ 될 수 μžˆλŠ” κ°€λŠ₯성이 있음
  • DB ν•œλŒ€λ‘œ μ €μž₯λŸ‰μ΄ 감당이 μ•ˆλ  λ•Œ 이λ₯Ό μ–΄λ–»κ²Œ λΆ„μ‚°ν•  것인가
    • Local cache, Global cahceλ₯Ό λ™μ›ν•˜κΈ°λ„ 함
    • μ–΄λŠμ •λ„ λ³΅μ œμ§€μ—°μ΄ λ―Όκ°ν•˜μ§€ μ•Šμ€ μ„œλΉ„μŠ€μ—μ„œλŠ” μ“°κΈ° μž‘μ—…μ€ Master λ…Έλ“œλ‘œ 읽기 μž‘μ—…μ€ λ³΅μ œλ˜λŠ” Master의 데이터λ₯Ό λ³΅μ œν•œ μ—¬λŸ¬ λŒ€μ˜ Slave둜 DBλ₯Ό κ΅¬μ„±ν•˜κΈ°λ„ 함
    • μš©λŸ‰μ΄ λ§Žλ‹€λ©΄ μ—¬λŸ¬ 개의 DBμΈμŠ€ν„΄μŠ€μ— 이λ₯Ό λ‚˜λˆ„μ–΄ μ €μž₯ν•˜κΈ°λ„ 함(샀딩)
      • λ„€μ΄λ²„μ—μ„œλŠ” Nbase-TλΌλŠ” μ €μž₯ ν”Œλž«νΌμ„ μ“°κ³  있음

πŸ’Ώ 개발 툴

Jenkins, AWS λ“± Backend에 도움이 λ˜λŠ” 도ꡬλ₯Ό λ°°μ› μ§€λ§Œ 도ꡬλ₯Ό λ°°μš΄λ‹€? μ‹€λ ₯일까?

  • 개발 도ꡬλ₯Ό 잘 ν™œμš©ν•˜λŠ” λŠ₯λ ₯은 생산성과 μ§κ²°λ˜κΈ°μ— μ€‘μš”
  • 슀슀둜 읡힐수 있고 μ μ ˆν•œ 도ꡬλ₯Ό 선택할 수 μžˆλŠ” κ°œλ°œμžκ°€ ν˜„μž₯μ—μ„œλŠ” ν•„μš”
  • μƒˆλ‘œμš΄ 도ꡬ가 λ‚˜μ™”μ„ λ•Œ 적응할 수 μžˆλŠ” ν•™μŠ΅λ ₯/적응λ ₯/νŒλ‹¨λ ₯이 본질이고 이것이 λˆ„μ μ΄ λ˜μ–΄ μ‹€λ ₯이 됨
    • κ·Έλƒ₯ λ‹¨μˆœνžˆ μ“Έ 수 μžˆλ‹€λŠ” 것은 μ‹€λ ₯이 μ•„λ‹˜

λΆ„λ₯˜

  • 레벨 0: 이미 μ“°κ³  μžˆλŠ” κ°œλ°œλ„κ΅¬μ˜ μ‚¬μš©λ²•μ„ μ•Œλ €μ£Όκ±°λ‚˜ κ°€μ΄λ“œ λ¬Έμ„œλ₯Ό μ€˜λ„ 잘 λͺ»μŠ΄
  • 레벨 1: μ•Œλ €μ£Όκ±°λ‚˜ 같은 νŒ€μ—μ„œ λ§Œλ“  κ°€μ΄λ“œ λ¬Έμ„œμ— μžˆλŠ” 만큼만 μ“Έ 수 있음
  • 레벨 2: κ°œλ°œλ„κ΅¬μ˜ 레퍼런슀λ₯Ό 보고 μ‚¬μš©λ²•μ„ 읡힐 수 있음
    • μžμ‹ μ΄ κ²½ν—˜ν•œ μ‚¬μš©λ²•μ„ λ¬Έμ„œν™”ν•΄μ„œ νŒ€ 내에 μ „νŒŒν•  수 있음
  • 레벨 3: μ—¬λŸ¬ 개발 도ꡬλ₯Ό 비ꡐ λΆ„μ„ν•΄μ„œ 상황에 μ ν•©ν•œ 도ꡬλ₯Ό 선택할 수 있음
    • 곡식 레퍼런슀 λ¬Έμ„œμ—μ„œ λΆ€μ‘±ν•œ 뢀뢄을 μˆ˜μ •ν•΄μ„œ κΈ°μ—¬ν•  수 있음
  • 레벨 4: κ°œλ°œλ„κ΅¬μ˜ 문제λ₯Ό μ†ŒμŠ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ„œ Fork/νŒ¨μΉ˜ν•΄μ„œ μ‚¬μš©ν•  수 있음

μ‹ μž… 사원이라면 레벨 2 μ •λ„λŠ” κ°€μ Έμ•Ό 함


πŸ’Ώ 병렬 처리

Servlet 기반의 Javaμ›Ήμ„œλ²„λ“€μ€ 기본적으둜 μ‚¬μš©μžμ˜ μš”μ²­μ„ λ³‘λ ¬μ μœΌλ‘œ 처리. λ”°λΌμ„œ λ©€ν‹°μŠ€λ ˆλ“œμ—μ„œ κ³΅μœ λ˜λŠ” 것인지 μ˜μ‹ν•˜λŠ” 일은 μ€‘μš”

  • Local cacheλ₯Ό μ μš©ν•  λ•ŒλŠ” λ©€ν‹°μŠ€λ ˆλ“œμ—μ„œ 곡유된 객체가 μ‰½κ²Œ λˆˆμ— μ•ˆ 띌 μˆ˜λ„ 있음
    • Cache λŒ€μƒ κ°μ²΄λŠ” Immutableν•˜κ²Œ μœ μ§€ν•˜λŠ” 것이 μ•ˆμ „
  • μ‚¬μš©μž μš”μ²­ μ²˜λ¦¬μ‹œ μŠ€λ ˆλ“œ ν’€λ‘œ μ‹€ν–‰ν•΄μ•Ό ν•  μž‘μ—…μ΄ μ’…μ’… 생기기도 함
    • μ‚¬μš©μž 응닡에 영ν–₯을 주진 μ•Šμ§€λ§Œ μ‹€ν–‰μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ μˆ˜λ„ μžˆλŠ” update ꡬ문을 DB에 μ‹€ν–‰ν•˜λŠ” μž‘μ—… 같은 것
    • μ΄λŸ°κ²ƒμ€ Executors, ThreadPoolExecutor에 μžˆλŠ” μ˜΅μ…˜λ“€λ‘œ μ •κ΅ν•œ μ œμ–΄
    • new Thread()둜 직접 μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜λŠ” 것은 ꢌμž₯ν•˜μ§€ μ•ŠμŒ

πŸ’Ώ λ³΄μ•ˆ

  • XSS, CSRF, SQL Injection 곡격에 λŒ€μ²˜ν•˜λŠ” 방법은 λͺ¨λ“  κ°œλ°œμžκ°€ μ•Œκ³  μžˆμ–΄μ•Ό 함
    • λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ 발견된 λ³΄μ•ˆ 취야점에 λŒ€μ²˜ν•œ κ²½μš°κ°€ 많음
    • 보톡 버전업을 ν•˜κ±°λ‚˜ νšŒμ‚¬λ‚΄μ— 자체적인 패치

πŸ’Ώ ν…ŒμŠ€νŠΈ

FE 개발이 λΆ„μ—…ν™” 되고 μ„œλΉ„μŠ€κ°„μ˜ API 호좜이 λ§Žμ•„μ§€λ©΄μ„œ 졜근 λ°±μ—”λ“œ 개발자의 μ—…λ¬΄λŠ” API μ„œλ²„ κ°œλ°œμ— 더 μ§‘μ€‘λ˜κ³  있음

  • λ”°λΌμ„œ μ΅œμ’…μ μœΌλ‘œ UI와 ν†΅ν•©ν•˜κΈ° 전에 κ°œλ°œν•œ APIλ₯Ό 슀슀둜 ν…ŒμŠ€νŠΈν•΄μ•Ό ν•  ν•„μš”μ„±μ΄ 더 컀쑌음
    • 였λ₯˜κ°€ μžˆλ‹€λŠ” 제보λ₯Ό λ‹€λ₯Έ κ°œλ°œμžλ‘œλΆ€ν„° λ°›μ•„μ„œ μˆ˜μ • ν›„ μž¬λ°°ν¬ν•˜κ³  λ‹€μ‹œ μ•Œλ¦¬λŠ” λΉ„μš©μ€ 슀슀둜 였λ₯˜λ₯Ό λ°œκ²¬ν–ˆμ„ λ•Œ 보닀 크기 λ•Œλ¬Έ
  • λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ 개발 ν”Œλž«νΌμ„ κ°œλ°œν•˜λŠ” κ²½μš°μ—λ„ ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” μ€‘μš”
    • 라이브러리 배포 ν›„ 이λ₯Ό μ μš©ν•œ μ„œλ²„μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œ 재배포 ν•˜λŠ” 과정은 λΉ„μš©λ„ 크고 μ‹ λ’°λ₯Ό μžƒκ²Œλ˜λŠ” μš”μΈμ΄ 됨

πŸ’Ώ 자료ꡬ쑰/μ•Œκ³ λ¦¬μ¦˜

μ‹€λ¬΄μ—μ„œ μ•Œκ³ λ¦¬μ¦˜μ„ 직접 κ΅¬ν˜„ν•˜μ§€λŠ” μ•Šμ§€λ§Œ κ΅¬ν˜„λœ μ†”λ£¨μ…˜μ„ 잘 ν™œμš©ν•˜κ³  ν™œμš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ·Έ 바탕이 된느 지식이 μ€‘μš”

  • λŒ€μš©λŸ‰ 데이터λ₯Ό μ–΄λ–»κ²Œ μ €μž₯ν•˜κ±°λ‚˜ 탐색할지λ₯Ό κ²°μ •ν•  λ•Œ
  • LINE μ†Œμ…œ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€μ˜ μ•„ν‚€ν…μ²˜, SSDλŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λ₯Ό μ–΄λ–»κ²Œ λ°”κΎΈκ³  μžˆλŠ”κ°€? 의 κΈ°μ‚¬μ—μ„œ B-Tree, B+Treeλ₯Ό μ–΄λ–»κ²Œ ν™œμš©ν–ˆλŠ”μ§€λ„ μ°Έκ³ 

πŸ’Ώ 개발 ν”„λ ˆμž„ μ›Œν¬

λ°±μ—”λ“œ 개발 ν”„λ ˆμž„μ›Œν¬ νŠΈλ Œλ“œ

Spring/Netty 기반의 ν”„λ ˆμž„μ›Œν¬λ“€μ΄ κΎΈμ€€ν•œ λ°œμ „μ„ ν•˜κ³  있음

  • κ³ λΆ€ν•˜ 처리λ₯Ό μœ„ν•œ μ„œλ²„μ—λŠ” Nettyλ₯Ό 기반으둜 UI 개발과 직접 ν˜ΈμΆœλ˜λŠ” API μ„œλ²„λ‚˜ HTMLκΉŒμ§€ λ§Žμ€ 곳에 μ“°μž„
  • 비동기 I/Oλ₯Ό ν™œμš”ν•œ μ„œλ²„ 개발이 λ§Žμ€ 관심을 끌고 μžˆλ‹€.
    • 비동기 개발 μžμ²΄κ°€ κ°€μ§€λŠ” μ§„μž…μž₯λ²½κ³Ό 기술적인 λ‚œμ΄λ„κ°€ μžˆμ—ˆμŒ
    • JDBC μŠ€νŽ™μ˜ κ΅¬ν˜„μ²΄κ°€ κ³΅μ‹μ μœΌλ‘œ λ‚˜μ˜€μ§€ μ•Šμ€ 탓도 있음
    • ν•˜μ§€λ§Œ μ΅œκ·Όμ— Spring5 μ—μ„œ 비동기 IO κ°œλ°œμ„ μ§€μ›ν•˜λŠ” Webflux λͺ¨λ“ˆμ΄ λ“±μž₯함
  • νŠΈλž˜ν”½μ΄ λ§Žμ•„μ„œ 동기/μ“°λ ˆλ“œ κΈ°λ°˜μœΌλ‘œλŠ” μžμ›μ„ 효율적으둜 μ“Έ 수 μ—†λŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” μ“Έλ§Œν•œ 선택지
  • . λ„€μ΄λ²„μ—μ„œ κ³ λΆ€ν•˜λ₯Ό μ²˜λ¦¬ν•˜λŠ” ν”Œλž«νΌμ˜ μ„œλ²„λŠ” Netty/Vert.x μœ„μ—μ„œ 비동기 λ°©μ‹μœΌλ‘œ 개발된 것이 λ§ŽμŠ΅λ‹ˆλ‹€. λŒ€μš©λŸ‰ μ„Έμ…˜μ„ μœ„ν•œ λ‘œλ“œλ°ΈλŸ°μ„œ 도 κ·Έ 예

This post is licensed under CC BY 4.0 by the author.

Kafka Api

Programming Skills 2