2021-03-26(Fri)

ν•­λͺ©

λ‚΄μš©

ν•™μŠ΅ λ‚ μ§œ

2021-03-26(금)

ν•™μŠ΅ μ‹œκ°„

11:00~23:00

ν•™μŠ΅ λ²”μœ„ 및 주제

μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°

ν•™μŠ΅ λͺ©ν‘œ

μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°λ₯Ό λ§›λ³Έλ‹€.

λ™λ£Œ ν•™μŠ΅ 방법

-

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

μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°μ™€ OAuth 2.0으둜 둜그인 κΈ°λŠ₯ κ΅¬ν˜„ν•˜κΈ°

μŠ€ν”„λ§ 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” λ³΄μ•ˆμ„ μœ„ν•œ ν‘œμ€€μ΄κ³ , 인터셉터, ν•„ν„° 기반의 λ³΄μ•ˆ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 것보닀 더 ꢌμž₯ν•˜κ³  μžˆλ‹€.

μ§λ ¬ν™”λž€ λ¬΄μ—‡μΌκΉŒ?

객체의 μ§λ ¬ν™”λŠ” 객체의 λ‚΄μš©μ„ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ λ³€ν™˜ν•˜μ—¬ 파일 λ˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•΄μ„œ 슀트림(μ†‘μˆ˜μ‹ )이 κ°€λŠ₯ν•˜λ„λ‘ ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

μžλ°”μ˜ I/O μ²˜λ¦¬λŠ” μ •μˆ˜, λ¬Έμžμ—΄ λ°”μ΄νŠΈ λ‹¨μœ„μ˜ 처리만 μ§€μ›ν–ˆμ—ˆλ‹€. λ”°λΌμ„œ λ³΅μž‘ν•œ λ‚΄μš©μ„ μ €μž₯/볡원 ν•˜κ±°λ‚˜, λ„€νŠΈμ›Œν¬λ‘œ μ „μ†‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체의 λ©€λ²„λ³€μˆ˜μ˜ 각 λ‚΄μš©μ„ μΌμ •ν•œ ν˜•μ‹μœΌλ‘œ λ§Œλ“€μ–΄(이것을 νŒ¨ν‚·μ΄λΌκ³  ν•œλ‹€) 전솑해야 ν–ˆλ‹€.

객체 μ§λ ¬ν™”λŠ” 객체의 λ‚΄μš©(κ΅¬μ²΄μ μœΌλ‘œλŠ” λ©€λ²„λ³€μˆ˜μ˜ λ‚΄μš©)을 μžλ°” I/Oκ°€ μžλ™μ μœΌλ‘œ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ λ³€ν™˜ν•˜μ—¬, μ €μž₯/λ³΅μ›ν•˜κ±°λ‚˜ λ„€νŠΈμ›Œν¬λ‘œ 전솑할 수 μžˆλ„λ‘ κΈ°λŠ₯을 μ œκ³΅ν•΄μ€€λ‹€. 즉 개발자 μž…μž₯μ—μ„œλŠ” 객체가 아무리 λ³΅μž‘ν•˜λ”λΌλ„, 객체직렬화λ₯Ό μ΄μš©ν•˜λ©΄ 객체의 λ‚΄μš©μ„ μžλ°” I/Oκ°€ μžλ™μœΌλ‘œ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ λ³€ν™˜ν•˜μ—¬ μ €μž₯μ΄λ‚˜ 전솑을 ν•΄μ£Όκ²Œ λœλ‹€.

μžλ°”μ—μ„œ μ§λ ¬ν™”λŠ” μžλ™μœΌλ‘œ μ²˜λ¦¬ν•΄μ£ΌλŠ” 것이기 떄문에 μš΄μ˜μ²΄μ œκ°€ 달라도 μ „ν˜€ λ¬Έμ œλ˜μ§€ μ•ŠλŠ”λ‹€. 객체λ₯Ό 직렬화할 λ•Œ 객체의 λ©€λ²„λ³€μˆ˜κ°€ λ‹€λ₯Έ 객체(Serializable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ)의 레퍼런슀 λ³€μˆ˜μΈ κ²½μš°μ—λŠ” 레퍼런슀 λ³€μˆ˜κ°€ κ°€λ¦¬ν‚€λŠ” ν•΄λ‹Ή κ°μ²΄κΉŒμ§€λ„ 같이 객체직렬화λ₯Ό 해버린닀.

μ—”ν‹°ν‹° 클래슀의 κ²½μš°μ—” μ–Έμ œ λ‹€λ₯Έ 엔티티와 관계(@OneToManyλ‚˜ @ManyToMany)λ₯Ό κ°–κ²Œ 되면 직렬화 λŒ€μƒμ— 관계λ₯Ό 맺은 λ‹€λ₯Έ κ°μ²΄κΉŒμ§€ ν¬ν•¨λ˜μ–΄λ²„λ¦°λ‹€.

λ•Œλ¬Έμ— μ±…μ—μ„œλŠ” μ—”ν‹°ν‹° 클래슀λ₯Ό κ·ΈλŒ€λ‘œ λ¦¬ν„΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 직렬화 κΈ°λŠ₯을 κ°€μ§„ μ„Έμ…˜ Dtoλ₯Ό ν•˜λ‚˜ μΆ”κ°€λ‘œ λ§Œλ“€μ–΄μ„œ 운영 및 μœ μ§€λ³΄μˆ˜λ₯Ό μš©μ΄ν•˜κ²Œ ν•˜λ„λ‘ ν•œ 것이닀.

객체 μ „μ†‘μ˜ 단계

  1. μ§λ ¬ν™”λœ 객체λ₯Ό λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ λΆ„ν•΄ν•œλ‹€.(marshalling)

    • λ§ˆμƒ¬λ§(Marshalling)은 데이터λ₯Ό λ°”μ΄νŠΈμ˜ λ©μ–΄λ¦¬λ‘œ λ§Œλ“€μ–΄ μŠ€νŠΈλ¦Όμ— 보낼 수 μžˆλŠ” ν˜•νƒœλ‘œ λ°”κΎΈλŠ” λ³€ν™˜μž‘μ—…μ„ λœ»ν•œλ‹€.

    • μžλ°”μ—μ„œ λ§ˆμƒ¬λ§μ„ μ μš©ν•  수 μžˆλŠ” λ°μ΄ν„°λŠ” μ›μ‹œ μžλ£Œν˜•κ³Ό 객체 μ€‘μ—μ„œ Serializable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀둜 λ§Œλ“€μ–΄μ§„ 객체이닀.

  2. 직렬화 λ˜μ–΄ λΆ„ν•΄λœ 데이터λ₯Ό μˆœμ„œμ— 따라 μ „μ†‘ν•œλ‹€.

  3. 전솑 받은 데이터λ₯Ό μ›λž˜λŒ€λ‘œ λ³΅κ΅¬ν•œλ‹€.(unmarshalling)

μ„Έμ…˜ μ €μž₯μ†Œλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©ν•˜κΈ°

ν˜„μž¬λŠ” λ‚΄μž₯ ν†°μΊ£μ˜ λ©”λͺ¨λ¦¬μ— μ„Έμ…˜μ΄ μ €μž₯λ˜λ―€λ‘œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž¬μ‹€ν–‰ν•˜λ©΄ 둜그인이 ν’€λ¦°λ‹€. 배포할 λ•Œλ§ˆλ‹€ 톰캣이 μž¬μ‹œμž‘λ˜λŠ” 것이닀.

λ•Œλ¬Έμ— ν˜„μ—…μ—μ„œλŠ” μ„Έμ…˜ μ €μž₯μ†Œμ— λŒ€ν•΄ λ‹€μŒ 3κ°€μ§€ 쀑 ν•œ κ°€μ§€λ₯Ό μ„ νƒν•œλ‹€.

  1. ν†°μΊ£ μ„Έμ…˜μ„ μ‚¬μš©ν•œλ‹€.

    • 일반적으둜 별닀λ₯Έ 섀정을 ν•˜μ§€ μ•Šμ„ λ•Œ 기본적으둜 μ„ νƒλ˜λŠ” 방식

    • ν†°μΊ£(WAS)에 μ„Έμ…˜μ΄ μ €μž₯되기 λ•Œλ¬Έμ— 2λŒ€ μ΄μƒμ˜ WASκ°€ κ΅¬λ™λ˜λŠ” ν™˜κ²½μ—μ„œλŠ” ν†°μΊ£λ“€ κ°„μ˜ μ„Έμ…˜ 곡유λ₯Ό μœ„ν•œ μΆ”κ°€ 섀정이 ν•„μš”ν•˜λ‹€.

  2. MySQLκ³Ό 같은 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„Έμ…˜ μ €μž₯μ†Œλ‘œ μ‚¬μš©ν•œλ‹€.

    • μ—¬λŸ¬ WAS κ°„μ˜ 곡용 μ„Έμ…˜μ„ μ‚¬μš©ν•  수 μžˆλŠ” κ°€μž₯ μ‰¬μš΄ 방법이닀.

    • λ§Žμ€ 섀정이 ν•„μš” μ—†μ§€λ§Œ, κ²°κ΅­ 둜그인 μš”μ²­λ§ˆλ‹€ DB IOκ°€ λ°œμƒν•΄μ„œ μ„±λŠ₯상 μ΄μŠˆκ°€ 야기될 수 μžˆλ‹€.

    • 보톡 둜그인 μš”μ²­μ΄ 많이 μ—†λŠ” λ°±μ˜€ν”ΌμŠ€, 사내 μ‹œμŠ€ν…œ μš©λ„μ—μ„œ μ‚¬μš©ν•œλ‹€.

  3. Redis, Memcached와 같은 λ©”λͺ¨λ¦¬ DBλ₯Ό μ„Έμ…˜ μ €μž₯μ†Œλ‘œ μ‚¬μš©ν•œλ‹€.

    • B2C μ„œλΉ„μŠ€μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 방식이닀.

    • μ‹€μ œ μ„œλΉ„μŠ€λ‘œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” Embedded Redis와 같은 방식이 μ•„λ‹Œ μ™ΈλΆ€ λ©”λͺ¨λ¦¬ μ„œλ²„κ°€ ν•„μš”ν•˜λ‹€.

μ±…μ—μ„œλŠ” μ•„λž˜ μ΄μœ μ—μ„œ 2번째 방식을 μ„ νƒν•˜κ²Œ λœλ‹€.

  • 섀정이 κ°„λ‹¨ν•˜λ‹€.

  • μ‚¬μš©μžκ°€ λ§Žμ€ μ„œλΉ„μŠ€κ°€ μ•„λ‹ˆλ‹€.

  • λΉ„μš© 절감이 κ°€λŠ₯ν•˜λ‹€. λ ˆλ””μŠ€ 같은 λ©”λͺ¨λ¦¬ DBλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ λ ˆλ””μŠ€μ™€ 같은 μ„œλΉ„μŠ€(μ—˜λΌμŠ€ν‹± μΊμ‹œ)에 λ³„λ„λ‘œ μ‚¬μš©λ£Œλ₯Ό μ§€λΆˆν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평

예제 μ½”λ“œλ₯Ό λ”°λΌμ³€μŒμ—λ„ μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°μ—μ„œ λ¬Έμ œκ°€ 생겼닀. λ†€λžκ²Œλ„ μ—λŸ¬ λ‘œκ·Έκ°€ λ”°λ‘œ μ°νžˆμ§€λ„ μ•Šμ•„μ„œ μ™œ λ¬Έμ œκ°€ μƒκ²ΌλŠ”μ§€ μΆ”μΈ‘ν•΄μ•Όν–ˆλŠ”λ°, 이 문제λ₯Ό μ§€κΈˆ ν•΄κ²°ν•˜κΈ° 보닀, 이제 μ§€κΈˆ κ°€μ§„ κ°ˆμ¦μ„ λ°”νƒ•μœΌλ‘œ μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ°ν•˜κ²Œ ν•™μŠ΅ν•΄λ΄μ•Όκ² λ‹€λŠ” 결심이 μ„°λ‹€.

λ©˜ν† λ‹˜λ“€κ³Όμ˜ 면담이 μžˆμ—ˆλŠ”λ°, ν•„μš” μ΄μƒμœΌλ‘œ μžμ‘΄κ°μ„ κΉŽμ„ ν•„μš”λ„, μ£Όμ œλ„˜κ²Œ μ˜€λ§Œν•΄μ§ˆ ν•„μš”λ„ μ—†λ‹€. μ΄ˆμ‘°ν•¨μ„ 버리고 κ²Έν—ˆν•˜κ²Œ μ‹œκ°„μ„ 받아듀이고 λͺ©ν‘œλ₯Ό μœ„ν•΄ λ…Έλ ₯ν•˜μž.

λ‹€μŒ ν•™μŠ΅ κ³„νš

  • λ””μžμΈνŒ¨ν„΄ ν•™μŠ΅

Last updated

Was this helpful?