애드소프트 기술블로그

개발·서버 운영 실무 기록

애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.

최신 글

매번 새로 태어나는 Xcode 프로젝트 — Unity 게임 「오늘 누가 쏘냐?」를 iOS 로 빌드하며

Unity 의 iOS 빌드는 앱이 아니라 Xcode 프로젝트를 내놓고, 그 프로젝트는 빌드할 때마다 새로 만들어진다. 손으로 고친 곳이 남지 않는 프로젝트에 권한 문구와 서명을 코드로 넣고, Android 에서만 돌던 공유·진동·화면 방향을 iOS 로 옮기고, Android 모듈이 없는 맥에서도 에디터 스크립트가 컴파일되게 만든 이야기다.

맥 없는 책상에서 iOS 앱 짓기 — 클라우드 빌드를 접고 맥 미니를 들인 이유

책상에는 Windows PC 한 대뿐인데 Android 앱 세 개를 iPhone 으로 옮겨야 했다. Xcode 프로젝트를 파일 하나로 관리하고, 클라우드 빌드에서 맥 미니로 빌드 자리를 옮기고, Windows 에서 쓴 스크립트가 맥에서 멈추지 않게 하고, 업로드 직후 보이지 않는 빌드 번호까지 챙긴 iOS 전환 준비기의 첫 편이다.

설문은 지금 올라간 빌드를 묻는다 — 「오늘 누가 쏘냐?」 app-ads.txt 와 광고 정책 답, 처리방침 고치기

광고 SDK 를 넣으면 코드 밖의 말도 같이 바뀐다. 판매자 확인용 app-ads.txt 를 웹 사이트 루트에 올리고, Play 앱 콘텐츠의 광고·광고 ID·데이터 보안 답을 새 빌드 기준으로 미리 써 두고, 실제 매니페스트 권한에 맞춰 처리방침과 스토어 문구, 출시 노트를 고쳤다. 무엇을 언제 바꾸느냐가 더 중요했다.

광고가 뜨면 앱은 멈춘다 — 「오늘 누가 쏘냐?」 같이 하기에서 모든 폰에 동시에 광고 띄우기

전면 광고가 떠 있는 동안 그 폰의 메인 스레드는 멈춘다. 같이 하기에서 그건 연결이 끊긴 것과 구별이 안 됐다. 연결 확인을 소켓 스레드로 옮기고, 방장이 보내는 a_show 와 게스트가 돌려주는 a_done 두 메시지로 모든 폰의 광고를 맞췄다. 늦게 닫는 폰, 광고가 없는 폰, 나간 폰을 기다리는 규칙과 규약 버전 13 이야기.

결과가 나오는 순간은 건드리지 않는다 — 「오늘 누가 쏘냐?」 전면 광고를 넣을 자리와 AdService

파티게임에서 광고를 넣을 수 있는 자리는 생각보다 적다. 결과를 다 보고 다음 판으로 넘어가는 순간 하나만 골랐고, 그 자리에 전면 광고 하나를 띄우는 정적 서비스를 만들었다. 미리 불러오기, 닫힌 뒤 정확히 한 번 부르는 약속, 조용한 실패와 재시도, 빌드별 광고 단위와 광고 등급, iOS 분기까지.

첫 화면을 바꿨다가 되돌렸다 — 같은 틀로 만든 두 번째 홈페이지, 그리고 홈페이지가 하는 일들

회사 홈페이지의 틀을 그대로 들고 고객사 홈페이지를 하나 더 만들었다. 바꾼 것보다 바꾸지 않은 것이 더 많았고, 한 번은 바꿨다가 되돌렸다. 그 사이 원래 홈페이지는 회사 소개를 넘어 도구를 나눠 주고, 블로그를 잇고, 검색엔진과 광고 크롤러에게 신분을 밝히는 자리가 됐다.

조회번호는 여섯 자리면 충분했다 — 로그인 없는 A/S 진행 조회

A/S 를 맡긴 고객은 회원이 아니다. 그 사람이 자기 접수 건만 찾게 하려고 처음엔 긴 접수번호와 전화번호 뒷자리를 받았다. 폰 자판으로 스무 자 가까운 번호를 치게 하는 대신 여섯 자리로 줄이자, 이번엔 그 번호를 하나씩 맞혀 보는 쪽을 막아야 했다.

폼 전송이 아직 설정되지 않았습니다 — 서버 없는 홈페이지에 폼 붙이기

문의 페이지를 열었더니 폼 자리에 "폼 전송이 아직 설정되지 않았습니다"가 떠 있었다. 방문자가 읽을 문장이 아니었다. 서버 없는 정적 사이트에 폼을 붙이면서 키를 어디에 둘지, 브라우저가 어디로 보내게 둘지, 받는 쪽은 무엇을 막아야 할지를 하나씩 정했다.

영문 홈 주소에 슬래시가 두 개 붙었다 — 서버 없는 회사 홈페이지를 Astro로

회사 홈페이지 상단의 EN 버튼을 눌렀더니 주소 끝에 슬래시가 두 개 붙어 있었다. 경로를 만드는 함수 하나의 실수였는데, 그 함수를 언어 전환·hreflang·canonical 이 모두 쓰고 있었다. 서버 없이 HTML 만 올리는 회사 홈페이지를 Astro 로 만들고 IIS 에 배포하기까지의 이야기.