Upgrade to PRO for Only $50/Yearโ€”Limited-Time Offer! ๐Ÿ”ฅ

iLoveCoffee Programming Postmortem

Avatar for ehooi ehooi
April 26, 2013

iLoveCoffee Programmingย Postmortem

Avatar for ehooi

ehooi

April 26, 2013
Tweet

Other Decks in Programming

Transcript

  1. ์•„์ด๋Ÿฌ๋ธŒ์ปคํ”ผ ๊ณผ๊ฑฐ์‚ฌ โ€ข 2011๋…„ โ€“ 1์›” ํšŒ์‚ฌ ์„ค๋ฆฝ โ€“ 7์›”

    ์‹ธ์ด์›”๋“œ ์ถœ์‹œ โ€“ 10์›” ๋Œ€๋งŒ ์ถœ์‹œ โ€“ 12์›” ์ค‘๊ตญ ์ถœ์‹œ โ€ข 12์›” ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ ์‹œ์ž‘
  2. ๋‹น์‹œ ์ƒํ™ฉ โ€ข ์›น ๋ฒ„์ „๋„ ๊ณ„์† ๋ผ์ด๋ธŒ ํ•ฉ๋‹ˆ๋‹ค โ€“ #

    lines: 40,000 ๏ƒ  62,000 โ€ข Android๊ฐ€ ์šฐ์„ธํ•˜๋‚˜, iOS๋„ ๋ฌด์‹œํ•  ์ˆœ ์—†๋‹ค โ€ข ๋ชจ๋ฐ”์ผ ์†Œ์…œ ๊ทธ๋ž˜ํ”„ ๋Œ€์„ธ๊ฐ€ ์—†๋‹ค โ€“ ์ง์ ‘ ๋งŒ๋“ค์ž
  3. ๋‹น์‹œ ์ƒํ™ฉ โ€ข ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ ๊ฒฝํ—˜ ์ „๋ฌด โ€“ ํšŒ์‚ฌ์— Mac๋„

    ์—†๊ณ , ์•ˆ๋“œ๋กœ์ด๋“œํฐ๋„ ์—†์Œ โ€“ ํ”„๋กœ๊ทธ๋ž˜๋จธ 2์ธ์œผ๋กœ ์‹œ์ž‘ โ€ข ๋ชจ๋ฐ”์ผ์— ๋งž๋„๋ก ๊ธฐํš โ€“ UI ์ˆ˜์ • - Mouse Over โ€ฆ โ€“ ์ค‘๋ ฅ ์„ผ์„œ, ํ„ฐ์น˜๋ฅผ ํ™œ์šฉํ•œ ์ฝ˜ํ…์ธ 
  4. ์—”์ง„ ์„ ์ • Adobe AIR โ€ข ์žฅ์  โ€“ ์ฝ”๋“œ ์œ ์ง€ โ€“

    ๊ฐ•๋ ฅํ•œ 2D ๋ Œ๋”๋Ÿฌ โ€“ Flash โ€ข ๋‹จ์  โ€“ ์„ฑ๋Šฅ โ€“ ์•ˆ์ •์„ฑ Cocos2D-X โ€ข ์žฅ์  โ€“ Open Source โ€ข ๋‹จ์  โ€“ ๊ธฐ๋Šฅ ๋นˆ์•ฝํ•จ โ€“ OpenGL ES 1.1 โ€“ ๋ฒ„๊ทธ ๋งŽ๋‹ค โ€“ ํˆด์ด ์—†๋‹ค
  5. ๋‹น์‹œ ๊ฐ ํŒŒํŠธ ์ง„ํ–‰ ์ƒํ™ฉ โ€ข ๊ธฐํš ํŒŒํŠธ โ€“ UI

    ๊ธฐํš ์ค‘๋ฐ˜ ์ž‘์—… โ€“ UI ํ™”๋ฉด 50๊ฐœ ์ด์ƒ โ€ข ๊ทธ๋ž˜ํ”ฝ ํŒŒํŠธ โ€“ UI ๋””์ž์ธ ์‹œ์•ˆ ์ž‘์—… โ€ข ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒŒํŠธ โ€“ Legacy ๋ฉ์–ด๋ฆฌ ActionScript ์ฝ”๋“œ๋“ค Fla ํŒŒ์ผ๋“ค
  6. UI Editor Cocos Builder 1.0 โ€ข Only for Mac โ€ข

    No Source โ€ข No maintenance ์ž์ฒด ๊ฐœ๋ฐœ โ€ข Undo ์—†์œผ๋ฉด ์•ˆ ์“ด๋‹ค โ€ข ์ž์ฃผ ์ฃฝ์–ด๋„ ์•ˆ ์“ด๋‹ค โ€ข ํ‚ค๋ณด๋“œ๋กœ ํ”ฝ์…€ ๋‹จ์œ„ ์กฐ์ž‘ โ€ข ์ต์ˆ™ํ•œ MFC ์‚ฌ์šฉ ๏ƒ  ๋น ๋ฅธ ์ดˆ๊ธฐ ๋ฒ„์ „
  7. ๊ธฐ๋Šฅ ์ถ”๊ฐ€ โ€ข Glow Effect โ€ข Sprite Masking โ€ข Text

    Stroke ๏ƒ  ์ „๋ถ€ Flash์— ์žˆ๋˜ ๊ธฐ๋Šฅ
  8. C++๋กœ ๊ฐœ๋ฐœ ์‹œ์ž‘ โ€ข ์ฃผ์š” ์ธ๋ ฅ์€ ์›น ๋ฒ„์ „ ๊ฒฝํ—˜ ๋ฟ

    โ€“ ActionScript + Java โ€ข C++ โ€“ No Garbage Collection โ€“ No Closure ๏ƒจ ์ด ์†๋„๋ผ๋ฉด ๋ช‡ ๋…„์€ ๋งŒ๋“ค์–ด์•ผ ํ•  ํŒ
  9. ์ฝ”๋”ฉ ์‹ค์ˆ˜ ๋ฐฉ์ง€ โ€ข strict โ€ข class / descriptor โ€ข

    Visual Studio โ€“ Syntax highlighter โ€“ Build time syntax check (custom rule)
  10. ๋””๋ฒ„๊น… โ€ข Debug Console โ€“ C++ Crash โ€ข Lua Crash

    Report Server โ€ข VS Debugger โ€“ Debug API ๋„ˆ๋ฌด ๋А๋ฆฌ๋‹ค
  11. Coroutine ํ™œ์šฉ โ€ข ์ ˆ์ฐจ๋ฅผ ์„œ์ˆ  โ€“ ๊ทธ๋ƒฅ lua ์ฝ”๋“œ โ€“

    ์ง€์—ญ ๋ณ€์ˆ˜ โ€“ ๋ถ„๊ธฐ/๋ฐ˜๋ณต โ€ข yield? โ€“ ๊ธฐ๋ณธ ํ•จ์ˆ˜ ์†
  12. ๊ทธ๋ž˜ํ”ฝ ๋ฆฌ์†Œ์Šค ๋ถ„๋Ÿ‰ โ€ข ์ธํ…Œ๋ฆฌ์–ด ์•„์ดํ…œ: 4,500๊ฐœ โ€ข ์บ๋ฆญํ„ฐ ์•„์ดํ…œ:

    720๊ฐœ โ€ข ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜: 233๊ฐœ โ€ข ๊ฐ์ข… ์•„์ด์ฝ˜: 1,400๊ฐœ
  13. ํƒ€๊ฒŸ ์Šค๋งˆํŠธํฐ ์‚ฌ์–‘ โ€ข iPhone 3GS โ€“ Cortex-A8 600 MHz

    โ€“ PowerVR SGX535 โ€“ 320x480 โ€“ 256 MB RAM โ€ข Galaxy S โ€“ 1 GHz Cortex-A8 โ€“ PowerVR SGX540 โ€“ 480x800 โ€“ 512 MB RAM
  14. ๋ฆฌ์ŠคํŠธ ๋ฐ•์Šค - ํ…์ŠคํŠธ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ โ€ข JNI memory leak

    โ€ข ์ค„๋ฐ”๊ฟˆ ๋ฌดํ•œ ๋ฃจํ”„ ๋ฒ„๊ทธ ์ตœ์ ํ™” โ€ข ๋ฐ”๋€” ํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” ์ƒ๋žต โ€ข ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํšŸ์ˆ˜ ์ค„์ž„ โ€ข ๋ณต์‚ฌ ํšŸ์ˆ˜ ์ค„์ž„
  15. ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ• โ€ข ํž˜์œผ๋กœ ๊ตฌ๊ฒจ ๋„ฃ์Œ โ€“ ์ด ์ •๋„ ๋งŒ๋“ค์—ˆ์œผ๋ฉด,

    ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜์ง„ ์•Š๊ฒ ์ง€ โ€“ ์ผ๋ถ€ ์•„์ดํ…œ ์ˆ˜์ • ๏ƒจ 512x512 1์žฅ
  16. ์ธํ…Œ๋ฆฌ์–ด ์•„์ดํ…œ โ€ข ๋ฉ”๋ชจ๋ฆฌ/ํŒŒ์ผ ์šฉ๋Ÿ‰ ๋‘˜ ๋‹ค ๋ฌธ์ œ โ€ข PVRTC?

    ETC1? DXT? PNG 8bit? โ€ข RGBA4444 (PNG 32bit) โ€“ ๋””๋”๋ง โ€“ ์บ๋ฆญํ„ฐ, UI๋„ ์ผ๋ถ€ ์ ์šฉ
  17. ๋‹น์‹œ ๊ตฌ์กฐ โ€ข Java Socket Server โ€“ ์„ฑ๋Šฅ ํ–ฅ์ƒ โ€“

    ๋ฐฑ์„ญ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ โ€ข Mongo DB โ€“ ๋น ๋ฅด๊ฒŒ(๋งŒ) ๊ฐœ๋ฐœ โ€ข Web server?
  18. ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ โ€ข ์ž๋™ ์žฌ์ ‘์† ์‹œ๋„ โ€ข ์žฌ์ ‘์† ์„ฑ๊ณต์‹œ ํ†ต์‹ 

    ๋‚ด์šฉ ๋ณต๊ตฌ โ€“ TCP ์ฒ˜๋Ÿผ ์ฃผ๊ณ  ๋ฐ›์€ ํŒจํ‚ท์„ ๋งž์ถฐ ๋ด„
  19. ๋‹น์‹œ ์„œ๋น„์Šค ์ƒํ™ฉ โ€ข K์‚ฌ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ โ€“ Amazon ๋Œ€๋น„

    50% ์ด์ƒ ์ €๋ ด / ๊ธฐ๋Šฅ ๋ถ€์กฑ โ€“ ๋™์‹œ์ ‘์†์ž 1๋งŒ๋ช… ์ฒ˜๋ฆฌ / ์›” 40๋งŒ์› โ€“ ์ƒˆ๋ฒฝ์— ๊ฐ„ํ˜น ์„œ๋ฒ„ ๋ฉˆ์ถค (Hang) ๏ƒ  ์ž์ฒด ์„œ๋ฒ„ ๊ตฌ๋งค
  20. ํŠธ๋ž˜ํ”ฝ ํญ์ฆ ๋Œ€๋น„ Redis ๋„์ž… โ€ข Cache โ€“ ์นœ๊ตฌ ๋ ˆ๋ฒจ

    ๋“ฑ โ€ข ์†Œ๋ฉธ์„ฑ ๋ฉ”์‹œ์ง€ โ€“ ์นœ๊ตฌ์—๊ฒŒ ์š”์ฒญ โ€“ ์นœ๊ตฌ์ง‘ ๋ฐฉ๋ฌธ ํ–‰๋™ Mongo DB โ€ข Collection ๋ถ„๋ฆฌ โ€ข ๋ฉ”๋ชจ๋ฆฌ ์ฆ์„ค โ€ข Sharding?
  21. Game Server ์žฅ์•  ์ฒ˜๋ฆฌ โ€ข ulimit โ€ข iptables โ€“ ip_conntrack

    โ€ข GC options โ€ข More Memory โ€ข Load balancing โ€“ uid % k
  22. ์ตœ์ ํ™” ํšจ๊ณผ โ€ข RU ์•ฝ 500๋งŒ โ€ข DAU ์•ฝ 150๋งŒ

    โ€ข CCU ์•ฝ 22๋งŒ โ€ข DB 400๋งŒ์› * 1๋Œ€ โ€ข APP 110๋งŒ์› * 3๋Œ€ โ€ข IDC ์ž„๋Œ€๋ฃŒ 70๋งŒ์› / ์›” โ€“ ๋‹จ, CDN ๋ณ„๋„
  23. ํ•˜๊ณ  ์‹ถ์€ ๋ง โ€ข ์˜จ๋ผ์ธ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„ ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„ ์ž˜

    ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค โ€ข Cocos2D-X๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ํŒ€๋“ค์— ๋„์›€์ด ๋˜๊ธธ