[자작게임] 무한의 채굴
유니티로 각잡고 게임한번 만들어보자고해서, 스터디해서 만들어본 방치형 광물 채굴 게임... 유니티를 사람들은 쉽게 생각하지만, 잘 만들려면 유니티를 정말 심도 깊게 스터디해야한다는것을 느꼈다.쉽게 시작할수있지만, 쉽게 끝낼수는 없는 3D엔진툴이랄까? ㅋ 유니티에서 드로우콜 이라는 개념이 있는데, 이건 간단히 이야기하면, 최초 CPU가 GPU에게 “이 오브젝트를 화면에 그려줘”라고 데이터와 함께 요청하는 명령의 단위이다.드로우콜이 많으면 많을수록 성능은 떨어지게 된다. 지속적으로 CPU가 요청을 해야하니, 병목이 생기고 성능이 떨어지기 때문이다. 따라서, 드로우콜을 요청할때, 같은 객체를 한번에 그릴수있게 만들어, 다수의 객체를 그리게 만들거나, 팔레트, 메시를 하나로 합치거나 같이 사용하여, 드로우콜을..
[개발생각] Apache Camel에 대해서
아파치 카멜 처음 잠깐 써본게, 18년 정도 된거같은데... 최근에 각잡고 써보니 쓸만하다!! 인터넷 찾아보니, 최초 릴리즈가 2007년...ㅎㄷㄷ잠깐 사용했을때가, 나온지 1-2년된 따끈따끈한때였구나 ㅋ그때도 어느정도 성숙한 오픈소스여서, 꽤 유용했던것으로 기억한다.특히 간단한 ETL, BATCH 잡에 사용하기 정말 강력했던 기억이다.물론, 스프링배치가 배치쪽은 아직 꽉 잡고있다고는 하지만, 스프링배치는 너무 초기 러닝커브가 있다는 점이 아쉽다.최근에 카멜을 다시 쓸일이 있어서, 좀 자세히 알아봤는데, 실시간 이벤트 처리에 관해서는 꽤 괜찮은 솔류션으로 보인다. 우선 병렬처리에 대한 접근이 쉽다.샤딩을 직접 해서 대상을 만들거나, 파티션으로 데이터를 읽거나 하는 방법을 쓰지않아도 (물론 쓰면 더좋다),..
[개발생각] Webview앱 vs Native앱
앱을 만들때, 웹뷰로 만들지, 네이티브로 만들지는 한번쯤 고민해 보는것 같다. 참고로, 개인프로젝트면 웹뷰가 편하긴 한것같다..ㅋ(Dart, Swift등 또 배우기, 귀찮아...) 웹뷰앱과 네이티브앱 장단점을 생각했을때, 만약 최고의 앱을 만들 목표라면, 너의 선택은? 이라고 누군가 묻는다면, 나는 '네이티브앱'을 선택할듯하다. 외국어도 네이티브가 제일 외국어 잘하지... 앱도 네이티브가 성능, 기능면에서 더 뛰어난건 반론을 할수가 없지 않을까? ㅋ 그렇다면, 네이티브앱이 가장 큰 단점이라고 생각하는것은? 이라고 묻는다면, 배포/장애대응등이지 않을까..하지만, 이걸 단점이라고 생각하기보다는, 장점을 얻기위한 트레이드오프라고 보고, 배포/장애에 대한 대응을 잘 할수있도록, 프로세스를 만들고, 실수를 줄이도..
[개발생각] CI/CD unittest를 위한 인프라 환경 구성의 방법
Embadded infrastructure환경을 구축하자. (어디서든 테스트코드가 동작하게 만들자, 생각만해도 편하네) 로컬에서 유닛테스트 코드를 작성하고, 로컬 도커에 설치된 인프라환경(mysql, kafka, redis등등)으로 붙어서,유닛테스트를 돌리게 구성을 해놨었다.참, 로컬에서 인프라환경을 도커로 구성하니, 유닛테스트하기도 좋기 참 편했다. (나름 만족!! ^^) 그러던중, 이제 마지막 단계, CI/CD로 배포가 되는 파이프라인에도 unittest를 동작하도록 하고, 모든 테스트가 성공할때, 빌드를 진행하려고 하니, 고민스러운 부분이 생겼다. 바로 unittest infra환경이다.ci/cd가 독립적으로 인프라 환경을 구성하고, 해당 인프라 환경으로 접근하여, 유닛테스트가 실행되도록 하고싶었다..