Skip to content

JY-Dev/Backend-Roadmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 

Repository files navigation

λ°±μ—”λ“œ λ‘œλ“œλ§΅

κ°œμš”

μ–΄λ–€ λ°©ν–₯으둜 곡뢀해야할지 λͺ¨λ₯΄λŠ” λ°±μ—”λ“œ 취쀀생듀을 μœ„ν•΄ 도움을 주고자 λ°±μ—”λ“œ λ‘œλ“œλ§΅μ„ μž‘μ„±ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ œκ°€ 개발자둜 컀리어λ₯Ό μŒ“κ³  κ³΅λΆ€ν•˜λ©΄μ„œ 얻은 κ²½ν—˜κ³Ό 생각을 λ°”νƒ•μœΌλ‘œ λ‘œλ“œλ§΅μ„ μž‘μ„±ν–ˆκΈ° λ•Œλ¬Έμ— μ„±ν–₯에 따라 μ•ˆλ§žκ±°λ‚˜ 이게 정닡이 아닐 수 있기 λ•Œλ¬Έμ— ν•΄λ‹Ή λ‘œλ“œλ§΅μ„ μ„ νƒν•΄μ„œ κ³΅λΆ€ν•˜λŠ” 것은 본인 선택에 λ”°λΌμ•Όν•©λ‹ˆλ‹€.

κ°€μ΄λ“œ

일단 μ—¬λŸ¬κ°œμ˜ Step을 톡해 λ‚˜μ—΄ν•  건데 Step은 μˆœμ„œλ₯Ό μ˜λ―Έν•˜κ³  μ΅œλŒ€ν•œ μˆœμ„œμ— 따라 ν•˜λŠ”κ²ƒμ„ ꢌμž₯ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‚΄κ°€ ν•΄λ‹Ή λ‚΄μš©μ— λŒ€ν•΄ μ•Œκ³ μžˆκ±°λ‚˜ ν•˜λ©΄ κ±΄λ„ˆλ›°μ–΄λ„ λ©λ‹ˆλ‹€.

λ‘œλ“œλ§΅

Step 1.

ν”„λ‘œκ·Έλž˜λ° 언어에 λŒ€ν•΄ 잘 μ•Œμ§€λͺ»ν•˜κ±°λ‚˜ μ•„μ˜ˆ λͺ»ν•˜λŠ” 뢄듀을 μœ„ν•œ λ‹¨κ³„μž…λ‹ˆλ‹€. ν•΄λ‹Ή λ‹¨κ³„μ—μ„œλŠ” ν”„λ‘œκ·Έλž˜λ°μ„ μ–΄λ–»κ²Œ ν•  수 μžˆλŠ”μ§€ μ΄ν•΄ν•˜λŠ”κ²Œ κ°€μž₯ μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— 기본적인 문법듀에 λŒ€ν•΄ μ΄ν•΄ν•˜κ³  타이핑이 μ΅μˆ™ν•΄μ§ˆ 수 μžˆλ„λ‘ μ±…μ΄λ‚˜ κ°•μ˜λ§Œ 보기보단 직접 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것에 μ΅μˆ™ν•΄μ§„ λ‹€μŒ ν•΄λ‹Ή 단계λ₯Ό λ„˜μ–΄κ°€μ‹œλŠ”κ²ƒμ„ μΆ”μ²œν•©λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • Python(ꢌμž₯)
    • ν”„λ‘œκ·Έλž˜λ°μ΄ μ²˜μŒμ΄μ‹œλΌλ©΄ 개인적으둜 비ꡐ적 μ‰¬μš΄ Python으둜 μ‹œμž‘ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.
  • Java(ꢌμž₯)
    • Python을 ν•˜κ³  곡뢀해보면 더 μ’‹μŠ΅λ‹ˆλ‹€.
  • Kotlin(νž™ν•¨)
    • λ‚΄κ°€ μ’€ 더 νž™ν•΄μ§€κ³  μ‹Άλ‹€λ©΄ κ³΅λΆ€ν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

ν•™μŠ΅ 방법

점프 투 파이썬

λ‚˜λ„μ½”λ”© 파이썬 κ°•μ˜

이것이 μžλ°”λ‹€

Kotlin In Action

Step 2.

이전 단계λ₯Ό 잘 μ™„μˆ˜ ν•˜μ…¨λ‹€λ©΄ 이제 λ‚˜λ„ μ–΄λŠμ •λ„ 코딩을 ν•  수 μžˆλ‹€ ν•  수 μžˆλŠ”λ°μš” μ΄μ œλŠ” 코딩을 μ’€ 더 μž˜ν•˜κΈ° μœ„ν•œ 방법듀을 ν•™μŠ΅ν•΄μ•Όν•©λ‹ˆλ‹€.

ν•΄λ‹Ή λ‹¨κ³„μ—μ„œ μΆ”μ²œν•˜λŠ”κ±΄ 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜μΈλ° λ¨Όμ € μžλ£Œκ΅¬μ‘°μ— λŒ€ν•΄ ν•™μŠ΅ν•˜κ³  μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” λ‹€μ–‘ν•œ μžλ£Œκ΅¬μ‘°μ— λŒ€ν•΄ ν•™μŠ΅ν•˜κ³  직접 κ΅¬ν˜„ν•΄λ³΄λ©΄μ„œ μ–΄λ–»κ²Œ 자료ꡬ쑰λ₯Ό λ§Œλ“€ 수 μžˆλŠ”μ§€ μ΄ν•΄ν•˜κ³  기본적인 μ•Œκ³ λ¦¬μ¦˜μ„ ν’€μ–΄λ³΄λ©΄μ„œ κ΅¬ν˜„λŠ₯λ ₯을 높이기 μœ„ν•œ λ‹¨κ³„μž…λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • 기본적인 자료ꡬ쑰
    • List
    • Array
    • HashTable
    • LinkedList
    • Queue, Stack
    • Tree
    • Heap
  • μ•Œκ³ λ¦¬μ¦˜ 기초

ν•™μŠ΅ 방법

KOCW 자료ꡬ쑰 κ°•μ˜

파이썬 자료ꡬ쑰(Array, LinkedList, Stack, Queue, HashTable, Tree, Heap)

λ°±μ€€ 단계별 λ¬Έμ œν’€κΈ°

  • λ§‰νžˆλŠ” κ³³ κΉŒμ§€ μ΅œλŒ€ν•œ 풀어보기

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ κΈ°μ΄ˆμ•Œκ³ λ¦¬μ¦˜

  • λ§‰νžˆλŠ” κ³³ κΉŒμ§€ μ΅œλŒ€ν•œ 풀어보기

Step 3.

μ΄μ œλŠ” μ–΄λŠμ •λ„ 기초λ₯Ό μŒ“μ•˜κΈ° λ•Œλ¬Έμ— μ•Œκ³ λ¦¬μ¦˜μ„ 더 μ§‘μ€‘μ μœΌλ‘œ ν’€μ–΄λ³΄λ©΄μ„œ λ¬Έμ œν•΄κ²°λŠ₯λ ₯을 ν‚€μš°κ³  λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œμ˜ μ„±λŠ₯을 높이기 μœ„ν•΄ μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„ 그리고 λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ ν•™μŠ΅ν•©λ‹ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ μ΅μˆ™ν•΄μ§€κΈ° μœ„ν•΄ ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜κ³  ν•΄λ‹Ή μ•Œκ³ λ¦¬μ¦˜κ³Ό κ΄€λ ¨λœ 문제λ₯Ό μ—¬λŸ¬λ²ˆ ν’€μ–΄μ„œ ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. μ²˜μŒμ—λŠ” μ΅μˆ™ν•˜μ§€ μ•Šμ•„ 많이 μ–΄λ ΅κ³  νž˜λ“€κ²λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΅μˆ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ–΄λ €μš΄ 것이고 κΎΈμ€€νžˆν•˜λ©΄ 금방 극볡할 수 μžˆμ„κ±°μ—μš”.

μ΅œλŒ€ν•œ 직접 μƒκ°ν•΄μ„œ λ‚΄κ°€ μ•Œκ³ μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ ν’€ 수 μžˆλŠ”μ§€ 고민해보고 아무리해도 λͺ¨λ₯΄κ² λ‹€κ³  ν•˜λ©΄ 닡이 적힌 μ½”λ“œλ₯Ό 보기보단 닡에 λŒ€ν•œ μ•„μ΄λ””μ–΄λ§Œ μ΄ν•΄ν•˜κ³  κ°€μ Έμ™€μ„œ 직접 κ΅¬ν˜„ν•΄λ³΄λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • (μ‹œκ°„/곡간)λ³΅μž‘λ„
  • μ•Œκ³ λ¦¬μ¦˜

ν•™μŠ΅ 방법

Step 4.

이제 μžλ£Œκ΅¬μ‘°λž‘ μ•Œκ³ λ¦¬μ¦˜μ„ ν•˜λ©΄μ„œ λ¬Έμ œν•΄κ²°λŠ₯λ ₯μ΄λ‚˜ κ΅¬ν˜„λŠ₯λ ₯에 λŒ€ν•΄ 많이 킀웠을거라고 μƒκ°ν•©λ‹ˆλ‹€. μ΄μ œλŠ” μ½”λ“œλ₯Ό 남듀이 잘 읽을 수 있고 μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•œ μ½”λ“œλ‘œ λ°œμ „μ‹œν‚€κΈ° μœ„ν•΄ 객체지ν–₯에 λŒ€ν•΄ μ΄ν•΄ν•˜κ³  μ½”λ“œμ— μ μš©ν•  수 μžˆλ„λ‘ ν•™μŠ΅ν•˜κ³  ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ 남듀이 잘 이해할 수 μžˆλŠ” μ½”λ“œ λ˜λŠ” μœ μ§€λ³΄μˆ˜μ— μš©μ΄ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 ν•©λ‹ˆλ‹€.

개인적으둜 직접 μ½”λ“œλ₯Ό μ„€κ³„ν•˜λ©΄μ„œ 많이 ν•΄λ³΄λ©΄μ„œ λ‹€λ₯Έ μ‚¬λžŒμ€ μ–΄λ–»κ²Œ μž‘μ„± ν–ˆλŠ”μ§€λ„ ν™•μΈν•©λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • 객체지ν–₯
  • μ½”λ“œ 섀계 및 κ΅¬ν˜„
  • ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±

ν•™μŠ΅ 방법

Step 5.

Step 4λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ–΄λŠμ •λ„ 객체지ν–₯에 λŒ€ν•œ 이해가 생기셨을것이라 생각이 λ“­λ‹ˆλ‹€. 이제 코딩적인 뢀뢄은 손을 μž μ‹œ 놓고 μ•žμœΌλ‘œ μ€‘μš”ν•˜κ²Œλ  CS에 μ΄ˆμ μ„ λ§žμΆ”λ €κ³ ν•©λ‹ˆλ‹€. κ°€μž₯ μ€‘μš”ν•œκ±΄ λ„€νŠΈμ›Œν¬μ™€ OS인데 컴퓨터 ꡬ쑰같은 κ²½μš°λŠ” μ΄ˆλ°˜μ— λ„ˆλ¬΄ κΉŠκ²Œν•˜μ§€ μ•Šκ³  윀곽만 작으면 μ’‹μŠ΅λ‹ˆλ‹€. μ œκ°€ μΆ”μ²œν•˜λŠ” μˆœμ„œλŠ” 컴ꡬ κ°œμš” β†’ OS β†’ Network μ΄μˆœμ„œμž…λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • 컴퓨터 ꡬ쑰에 λŒ€ν•œ κ°œμš”
  • OS 기본적인 지식
  • Network OSI 7계측에 λŒ€ν•œ κ°œμš”
  • TCP/IP
  • HTTP
  • 기초 λ¦¬λˆ…μŠ€

ν•™μŠ΅ 방법

Step 6.

Step 5λ₯Ό 잘 마무리 ν•˜μ…¨λ‹€λ©΄ CS에 λŒ€ν•΄μ„œλ„ μ–΄λŠμ •λ„λŠ” μ•Œ 수 μžˆλ‹€κ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό λ°”νƒ•μœΌλ‘œ μ΄μ œλŠ” Spring Framework에 μ΅μˆ™ν•΄μ§€κΈ° μœ„ν•œ ν•™μŠ΅μ„ ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • Spring Framework
  • DB 기술 없이 κ°„λ‹¨ν•œ κ²Œμ‹œνŒ λ§Œλ“€μ–΄λ³΄κΈ° (tymeleaf + html + bootstrap μ΄μš©ν•΄μ„œ)
    • νšŒμ›κ°€μž… (λΉ„λ°€λ²ˆν˜Έ 단방ν–₯ μ•”ν˜Έν™” μ μš©ν•΄λ³΄κΈ°)
      • 아이디 λΉ„λ°€λ²ˆν˜Έ 방식
    • 둜그인 (Spring Security μ‚¬μš© x)
      • μ„Έμ…˜ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„
    • κ²Œμ‹œκΈ€ μž‘μ„±
    • κ²Œμ‹œκΈ€ 검색
    • κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회
    • κ²Œμ‹œκΈ€ 상세 쑰회

ν•™μŠ΅ 방법

Step 7.

Step 6λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ Spring Framework에 많이 μ΅μˆ™ν•΄μ‘Œμ„ν…λ° λ©”λͺ¨λ¦¬μ—λ§Œ 데이터λ₯Ό μ €μž₯ν•˜κ²Œ 되면 μ„œλ²„κ°€ λ‹€μš΄λ˜λ©΄ λͺ¨λ“  데이터λ₯Ό μžƒκ²Œλ©λ‹ˆλ‹€. κ·Έλž˜μ„œ 데이터λ₯Ό λ””μŠ€ν¬μ— μ €μž₯ν•˜κΈ° μœ„ν•œ 기술둜 λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‘΄μž¬ν•˜λŠ”λ° λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•΄ κ³΅λΆ€ν•˜κ³  데이터λ₯Ό 효율적으둜 λ””μŠ€ν¬μ— μ €μž₯ν•˜κ³  읽을 수 μžˆλ„λ‘ ν•™μŠ΅ν•©λ‹ˆλ‹€.

기쑴에 λ©”λͺ¨λ¦¬λ‘œ λ§Œλ“€μ—ˆλ˜ κ²Œμ‹œνŒμ„ DB κΈ°μˆ μ„ μ΄μš©ν•œ λ°©μ‹μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•©λ‹ˆλ‹€. 좔상화λ₯Ό 잘 ν•˜μ…¨λ‹€λ©΄ 크게 어렀움 없이 μ €μž₯μ†Œλ₯Ό λ°”κΏ€ 수 μžˆμ„κ±°μ—μš”.

ν•™μŠ΅ λ‚΄μš©

  • RDBMS
  • ERD 섀계
  • JPA Hibernate(선택)
    • QueryDSL(μΆ”μ²œ)
  • FLYWAY (선택)
  • λ©”λͺ¨λ¦¬λ‘œ λ§Œλ“€μ—ˆλ˜ κ²Œμ‹œνŒ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
    • Spring Data JDBCλ₯Ό μ΄μš©ν•΄μ„œ 개발 (ꢌμž₯) - 본인이 μ›ν•˜λŠ” κ²ƒμœΌλ‘œ 선택
      • JPAλ₯Ό μ“°κ³ μ‹Άλ‹€λ©΄ Spring Data JPA ν™œμš©
      • MyBatisλ₯Ό μ“΄λ‹€λ©΄ MyBatis ν™œμš©
    • DBλŠ” MySQL을 μ‚¬μš©ν•΄μ„œ κ°œλ°œν•©λ‹ˆλ‹€.
    • κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 νŽ˜μ΄μ§€λ„€μ΄μ…˜ μΆ”κ°€
      • Cusorbased pagination vs Offset pagination
    • κ²Œμ‹œκΈ€ 검색 κΈ°λŠ₯ μ„±λŠ₯ ν–₯상을 μœ„ν•œ λ¦¬νŒ©ν† λ§
      • MySQL 전문검색 Index ν™œμš©ν•΄λ³΄λ„λ‘
    • μ’‹μ•„μš” 쑰회수 κΈ°λŠ₯ μΆ”κ°€
    • λŒ“κΈ€ κΈ°λŠ₯ μΆ”κ°€
      • λŒ€λŒ“κΈ€ κΈ°λŠ₯ μΆ”κ°€(μΆ”μ²œ)
    • ERD 섀계

ν•™μŠ΅ 방법

Step 8.

Step 7 μ—μ„œ ν”„λ‘œμ νŠΈλ₯Ό 이제 μ™„μ„± ν–ˆμœΌλ‹ˆ 배포λ₯Ό ν•΄μ•Όν•˜λŠ”λ° λ°°ν¬ν•˜λŠ” 과정도 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμžκ°€ μ•Œμ•„μ•Όν•˜λŠ” μ˜μ—­μ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. κ°œμΈμ μœΌλ‘œλŠ” 많이 μ‚¬μš©ν•˜λŠ” Github Actionκ³Ό AWS 기반으둜 ν•΄μ„œ 배포λ₯Ό ν•˜λŠ” 방식에 λŒ€ν•΄ κ³΅λΆ€ν•©λ‹ˆλ‹€.

ν•™μŠ΅ λ‚΄μš©

  • CI/CD
  • μ‰˜ 슀크립트
  • GIthub Action
  • Load Balancer
  • AWS
    • S3
    • EC2
    • RDS
    • VPC
    • IAM
    • ALB
    • ECS(선택)
      • Container ν•™μŠ΅

ν•™μŠ΅ 방법

Advanced Step

μ•„λ§ˆ Step을 잘 따라왔닀면 이제 어떀것을 더 ν•΄μ•Όν• μ§€ 본인듀이 잘 μ•„λŠ” μƒνƒœκ°€ λ˜μ—ˆμ„ν…λ° μΆ”κ°€μ μœΌλ‘œ 제 개인적으둜 ν•˜λ©΄ 쒋을 것 같은 것을 μΆ”μ²œν•˜λ €κ³  ν•©λ‹ˆλ‹€.

ν•™μŠ΅ν•˜λ©΄ 쒋을 것듀

  • Go, Kotlin ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄
  • λΆ„μ‚°μ‹œμŠ€ν…œ
  • NoSQL
    • MongoDB
    • Redis
    • Apache Cassandra
    • scylladb
  • μ‹œμŠ€ν…œ 섀계
  • μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜
  • μ†Œν”„νŠΈμ›¨μ–΄ 개발 방법둠
    • DDD
    • Agile
  • λ””μžμΈνŒ¨ν„΄
  • JVM
  • 톡신 ν”„λ‘œν† μ½œ
    • GRPC
    • GraphQL
    • WebSocket
    • WebRTC
  • 인프라
    • ν΄λΌμš°λ“œ
    • Container
    • 둜그 쀑앙화
    • Container orchestration

ν•™μŠ΅ 방법

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors