사이드 프로젝트

게임이 아닌 서비스를 만들어보고 있다. 이것도 무려 5년전부터 기획했던 프로젝트이다.

아이디어를 5년 묵혀놓으니 그 형태가 이리저리 바뀌었다가 다시 원래 아이디어에서 다이어트 된 형태로 나왔다. 맘에든다. 쓸데없이 복잡하지 않고 심플하게 바뀐 아이디어에 목적도 분명하고 방향도 맞게 아이디어가 정리된 기분이다.

디테일한 부분들의 정리가 남아있지만 지난 한 달 동안 이것저것 프로토타입을 만들고 있는 중이다.

기술적으로도 굉장한 계획이 세워졌다가 하나씩 다이어트해서 현실적인 구현을 바라보고 있다. 내가 직접 모든것을 한다는 것은 즐겁고 성취감 넘치는 일일지 모르지만 서비스를 운영하고 키워나가기엔 현실적으로 불가능한 부분이 있다. 내가 만드는 하나의 프로덕트에 집중하기 위해 아쉽지만 다른 것들은 기존의 솔루션을 최대한 활용하기로 한다.

스케일이 확장되기 전에 비용이나 구조를 걱정하는건 바보같은 일임에 분명하지만 그렇다고 마구잡이로 만들다간 나중에 기회를 잃을 수 밖에 없다. 베스트프락티스가 아니어도 며칠정도 구조에 대해 고민해 보는건 나쁠게 없다. 최대한 다른 솔루션을 쓰고 최소한의 비용으로 향후 스케일 확장이 용이한 구조로 시작하게 되었다.

자잘한 비용들을 아낄 수 있는것도 좋지만 이정도 계획이면 마음의 평안을 찾을 수 있다는게 너무 좋다. 뭔가 이것저것 제한이 걸리고 비용이 발생한다는 생각은 개발에 집중을 못하게 해 주기 때문이다.

오라클 무료티어에 도커로 오픈소스 솔루션을 올리고 파일 트래픽은 클라우드플레어로 감당하기로 했다. 눈에 보일 비용 증가는 클라우드 플레어 스토리지인데 1테라에 월 15달라, 트래픽은 무제한이라는 조건이면 나쁘지 않다. 심지어 스토리지 비용이 다른 어떤 클라우드보다 싼것 같은데 선택의 여지가 없을 정도이다.

얼기설기 기본중에 기본 기능들은 구현이 끝났고 3월달은 베이스가 될 기능을 완성해 MVP를 선보일 MVP?를 만드는 것이 목표다. 즉 이번 버전은 다른 솔루션들과 큰 차이가 없지만, 큰 차이를 만들어 내기 위한 기본 준비작업을 하는것을 목표로 한다. 그러면 4월달에는 유니크한 기능에 집중할 수 있을것 같다.

인프라 설정과 설계도 끝났고, 기본 기능 구현도 완료 되었다. 어떤 결제 솔루션을 붙일지 아직 결정하진 않았지만 이건 옵션같은 부분이고.. 3월에 목표만큼 완성이 되면 애플개발자 프로그램에 다시 가입해 앱스토어에도 알파버전을 출시할 계획이다. 4월에 베타 5월 소프트런치를 하면 이 프로젝트가 수익성이 있을지 판가름 할 수 있을것 같다.

조금의 가능성이 보인다면 6월즈음에 회사를 그만두고 7월부터 더 집중해서 진행해 보고 싶은 욕심이 있다.

하지만 어디 첫술에 배부르랴..내가 재밌게 사용할 수 있는걸 1순위로 해서 만드는걸 즐기다 보면 좋은 결과가 있겠지!

[GameShell] 1차 구현

오잉.. 언제 시간이 이렇게 지난건지… 지난 번 목표 중 구현 된 부분들

  • Authentication
  • Local action process
  • Dynamic data
  • Static data
  • Local data
  • Shortened key
  • External asset

에셋관리는 실제 게임이 아니니 흥이 나지 않는다. 그래서 일단 보류. 한다면 Addressable + CCD 를 써야겠지? 근데 Addressable은 데이터가 캐시에 있어도 불러오는 딜레이가 조금 있던데 그 이유를 당췌 모르겠다.

1차 목표에는 없었지만 그 외 구현 사항으로

  • 전체 로직 개선, 개선, 개선
  • IPA 수동빌드 및 TestFlight upload

로직 개선이 조금 보람있었던 부분인데, 노출된 함수를 최소화 하고, 사용자 입장에서 디테일한 처리를 신경쓰지 않도록 구현했다. 사용자 정보를 건드리는 모든 콜은 히스토리를 남겨 서버와 자동으로 연동 되도록 하였다. 이 부분은 계속 개선이 필요한데 프로젝트 시작 전에 개선을 하면 할 수록 실제 프로젝트 구현과 유지보수에서 아낄 수 있는 시간은 어마어마 할 것이다.

다음 목표

  • 디버그 메뉴 만들기
  • 시간 디버그 가능하도록
  • 기본 설정 UI로 설정 Flag 테스트
  • 푸시/토큰 테스트
  • 게임센터 로그인(타 계정 로그인 연동)

그 다음에 실제 UI구현으로…?

목표는 6월 말까지!

[nocnoc] Edit post

간단한 포스트 수정 기능 추가.

39도까지 열이나서 병가를 냈다. 이 회사로 옮겨 2년만의 첫 병가… 독일 회사에서 기본 10일은 병가로 쓰는데 나는 뭐 이리 열심히 일하는지 모르겠네. 아스피린 먹고 파라세타몰 먹고 땀 뺀다음 열이 좀 내려서 얼른 기능 추가.

이 다음은 무엇을 해야 할까?

  • 화면 전환 효과
  • 카테고리(룸) 만들기
  • 이미지 에디터
  • 사진 선택
  • 잠금
  • 백업
  • 공유
  • 사용자 기본 관리 메뉴

[nocnoc] 썸네일

원본 사진으로 그리드 뷰에서 너무 느리기 때문에 포스트 저장 시 썸네일 생성. 원본사진 보기에서도 쓸 때없이 큰 사진을 볼 이유가 없으므로 상세보기용 중간크기 리사이즈 이미지도 생성. 그럼 원본 파일은 언제 사용? 그냥 백업용으로 일단 저장.

추후 이미지 에디터가 들어가면 이것들을 어떻게 처리할 지 고민해 보도록 하자. 썸네일 만드는데 의외로 시간이 걸려서 오버레이 로딩 스피너도 집어 넣음.

오늘 몸 컨디션이 최악인데… 그래도 무조건 1일 1기능 추가..아무리 작은 기능이라도 꼭 추가하는 것을 목표로 한다..

[nocnoc] delete post

delete post

image 파일도 함께 지워야 한다.

TODO

  • 처음 포스팅 할 때 이미지는 임시저장소에 저장 후 포스트 저장 시 최종 저장소로 이동해야 함.
  • 삭제 확인 팝업
  • 다음 작업은 수정. 이미지 수정이나 교체 없이 텍스트만

[nocnoc] 이미지 저장

오늘은 여러 일이 많아 간단하게 imagePicker 에서 불러온 이미지 localStorage 에 저장만…

썸네일 만들고 이런것 보다 상세보기/수정/삭제 부터 만들어야 겠다.

[nocnoc] 기본 포스팅 저장/불러오기

출장 전 1주일 업무처리와 출장 1주일 때문에 2 주간 공백이 있었다. 빨리 배우는 대신 빨리 잊기 때문에 2주는 참 긴 공백… 다행히 가장 복잡한 부분의 구조를 계속 머릿속에서 생각하며 개선할 수 있는 시간이 있었다.

오늘은 실제 포스팅 저장 시 클래스 -> Json -> File system 으로 저장 한 후, 다시 불러오는 서비스 매니저를 작성했다. 실제 UI 컨트롤러에서는 저장/불러오기만 신경쓰고 인터페이스가 완성 되었으니 나중에 암호화를 하든 로컬 DB에 넣든 클라우드에 보내든 하면 된다.

유니티에 비해 Json 입출력이 조금 번거로웠지만 일단 JsonSerializer 로 사용. Json은 파일로 일단 저장했는데 realm local db에 통으로 넣는것도 좋을것 같다. 완벽을 생각하면 완성을 할 수 없으니 대략 큰 틀만 붙여나가는 형식으로 완성했다.

주로 프로그램 설계를 A4 에 낙서 하듯이 하거나 머릿속에 담아두는데 딜레이가 생기면 바로 잊혀지는 관계로 요즘은 원노트에 간단히 메모하거나 코드 속에 TODO로 할 일을 관리하고 있다. 실제 메타 정보 저장/불러오는 틀이 완성되었으니 앨범에서 가져온 이미지를 복사해서 로컬 저장소에 넣거나 공용저장소에 넣기, 압축, 썸네일 생성 등 이미지처리에 관한 기본 기능을 구현해야 한다.

[nocnoc] Flow 만들기 / DB 스키마

간단한 네비게이션 플로우를 만들었다.

서비스가 실행되기 위한 가장 기본적인 구조작업으로, CRUD 기능과 사진 파일 저장 및 리스트 보기, 네비게이션 구조 Route 설정 등에 대한 자료를 공부하고 고민해 보았다. 서비스가 추구하는 방향이 closed, secured 방향이기 때문에 로컬 디비 기반으로 돌아가고 백업과 공유는 optional 로 처리되도록 구조를 잡아야 했다.

보안에 크게 상관없고 편의를 중요하시 하는 유저는 조금 쉬운 백업과 공유가 가능하도록 하고 프론트에서는 두 구조를 구분하지 않고 보여주도록…

실제 구현은 간단한 하단 네비게이션 바에 사진 선택까지, 화면 간 파라매터나 리턴값 가져오는 구조와 해당 데이터를 Json으로 로컬에 입출력하는 부분까지 구현되었다.

다음 목표 실제 이미지 파일저장(압축/리사이즈 포함), 로컬 json 저장/불러오기 및 메모리 이슈없는 무한 그리드 뷰

[nocnoc] 도메인 및 기타 CD 설정 및 로고 디자인

오늘은 개발 보다는 여러 환경 설정과 계정 설정에 시간을 보냈다.

먼저 개발 기간동안 사용할 로고를 디자인 했다. 완벽을 추구하면 1년넘게 로고만 만들고 있을 가능성이 있으니 일단 무조건 완성하는 걸로…

고민의 흔적들..
최종

로고는 최대한 단순하고 서비스 명을 알릴 수 있도록 디자인했다. 아이콘으로서 가독성이 있도록 다른 패턴이나 아이콘은 넣지 않았다. 노크를 표현하려 했지만 너무 복잡해서 포기.

각종 서비스 계정을 설정, 페북은 나중에.

https://www.instagram.com/nocnoc.me/

https://twitter.com/nocnoc_me

도메인 이메일 연결. Yandex 로 하려다 전쟁 때문에 일단 임시로 다음 스마트워크에 연결해 두었다.

[email protected]

호스팅 설정은 파이어베이스 호스팅으로. 깃헙에 머지 시 자동 디플로이되도록 설정했다.

www.nocnoc.me / nocnoc.me

그 외 자잘한 파이어베이스 툴들 설정과 자동화 설정을 끝냈다.

이제 개발만 하면 끝?