나는 메타 혐오 개발자다.

Today I Learned 날짜 2024년 9월 6일 금요일 내용 나는 메타 혐오 개발자다. 페이스북 로그인한 계정의 페이지에서 연동된 인스타그램 비즈니스 계정을 가지고 오기 위한 사투는 계속되고 있다. 우선 되는 것부터 만들자는 생각에 비즈니스 계정이 아닌 일반 계정의 게시글을 불러오는 작업을 시작했다. Docs에 들어가보니.. 그저께 충격적인 발표가 있었다. 뭔 중대발표를 90일을 남기고 하냐… 내용을 설명하자면 다음과 같다. 페이스북의 API를 이용하기 위해선 페이스북의 앱으로 등록해야 한다. 이때 앱의 유형을 선택할 수 있는데 그 중 인스타그램 일반 계정에 관한 API 사용을 위해선 앱 유형이 “소비자” 여야하고, 인스타그램 비즈니스 계정에 관해선 “비즈니스” 타입이여야 한다. 유형이 소비자인 앱이 사용하는 인스타그램 API 가 인스타그램 기본 디스플레이 API고, 유형이 비즈니스인 앱이 사용하는 API는 인스타그램 그래프 API다. 이 중 인스타그램 기본 디스플레이 API가 90일 이후부터는 사용할 수 없다는 이야기다. ...

2024년 9월 6일 · 5 분 · 배준수

페이스북 앱의 권한

Today I Learned 날짜 2024년 9월 5일 목요일 내용 페이스북 권한의 종류 대참사났다.. 페이스북 로그인 후 댓글까지 가져오는 로직에서 도저히 연관된 비즈니스 계정이 가져와지지 않고 있었다. 로그인 후 부터 발생하는 로직은 다음과 같다. 유저가 페이스북 로그인 서버는 페이스북 계정이 가진 페이스북 페이지를 모두 불러와 저장 이때, 페이스북 페이지와 연동된 인스타그램 비즈니스 계정 정보도 저장 유저가 사용할 페이스북 페이지 선택 선택된 페이스북 페이지와 연동된 인스타그램 비즈니스 계정의 미디어 정보를 조회 해당 미디어들의 댓글 정보를 모두 조회 조회한 데이터를 저장 3번에서 어떤 경우에는 불러와지고, 어떤 경우에는 불러와지지 않았다. 심지어 같은 계정 내에서도 어떤 페이지는 불러와지는 반면 어떤 페이지는 분명 비즈니스계정과 연동되어 있음에도 불러와지지 않았다. 왜 그런지 도저히 모르겠어서 열심히 메타 개발자 Docs를 뒤져봤다… ...

2024년 9월 5일 · 2 분 · 배준수

1장 웹 서핑하기 & 2장 간단한 API

1장 웹에서의 원칙 : 일반 사용자들이나, 자동화 소프트웨어 에이전트나 동일하게 작동한다. URL : 데이터 접근 경로 ⇒ 각 URL은 하나의 리소스를 식별한다. 브라우저가 리소스에 HTTP 요청을 보내면 서버는 응답으로 리소스의 표현(representation)을 반환한다. 주소 지정 가능성(addressability) 하나의 URL은 단 하나의 리소스만 식별한다. 플래시 인터페이스가 이를 어긴 대표적인 예시 이 원칙은 모든 리소스는 각각 자신의 URL을 가져야 한다는 말 짧은 세션 HTTP 세션은 하나의 요청 동안 유지된다. 요청이 발생하지 않으면 서버는 클라이언트의 존재를 모른다 ⇒ 무상태(statelessness) 자기 서술형 메시지 요청에서 받은 리소스의 표현에는 보통 다음에 해야할 것도 포함되어 있다. ...

2024년 9월 4일 · 4 분 · 배준수

서비스 분리시키기

Today I Learned 날짜 2024년 9월 4일 수요일 내용 기존 서비스 분리 알파플러스에 기생(?)시켜놨던 인스타그램 코멘트 기능을 분리했다. 사실 애초에 만들때도 같은 서버에 있을 뿐 서로 연관은 전혀 없도록 해놨기 떄문에 그냥 복붙하면 될줄 알았는데… 바로 다음 스프린트인 네이버 플랫폼 추가를 고려하느라 데이터베이스를 열심히 수정해놨더니 제대로 되는게 하나도 없다… 데이터베이스의 구조가 바뀐다는 로직도 변경되야 할 수 있음을 간과했다. 예를 들어, 현재는 페이스북 계정을 로그아웃 할 경우 기존에 게시해둔 댓글 위젯을 삭제하지 않는다. 다른 계정으로 로그인 했을 떄 연결이 남아있는 것이 있다면 삭제해주는 로직을 취하는데, 이번에는 그럴수가 없게 됐다. 페이스북 로그인, 인스타그램 로그인이 따로 존재하면서 둘 간의 서열이 존재해야 하기 때문이다. ...

2024년 9월 4일 · 1 분 · 배준수

서비스 진입 구상하기

Today I Learned 날짜 2024년 9월 3일 화요일 내용 서비스 초기 진입 구상 인스타그램 서비스의 초기 진입 부분을 구현하고 있다. 크게 어렵다거나 골치아픈 부분은 없는데 이것저것 따지고 세세하게 신경써야 할 부분이 많다… 유저의 인스타그램 계정이 비즈니스냐 아니냐에 따라 전혀 연관되지 않은 테이블로 나뉘어진다. 애초에 인스타그램 피드와 인스타그램 코멘트는 그렇게 구현된 서비스다 보니까… 인스타그램 기본 계정을 사용하다, 그 계정을 비즈니스 계정으로 바꾸었을 때 데이터를 어떻게 유지시켜 줄 것인가? 비즈니스 계정인지, 일반 계정인지 API 만으로 판단할 수 있는가? 계정이 다수가 되었을 때의 확장성은 어떻게 처리할 것인가? 로그아웃시에 데이터는 어떻게 처리하며 재 로그인시 데이터를 어떻게 찾아 연결해줄 것인가? 등등…. 이런 개발이 가장 어렵다. 온갖 경우의 수를 다 생각해봐야 하는 스프린트.. ...

2024년 9월 3일 · 1 분 · 배준수

구글 API가 작동하지 않았던 이유

Today I Learned 날짜 2024년 9월 2일 월요일 내용 이번엔 구글 차례.. 진짜 다 되었나 싶어 열심히 테스트를 돌리던 와중 또 하나의 문제를 발견해버렸다. 멀쩡한 스프레드시트를 정기 업데이트할 때 만 못찾는다… spreadsheet가 없다며 404를 뱉는다. 분명 있다. 직접 들어가봐도 있고, ID도 멀쩡하며, 내가 저 함수를 따로 빼서 실행해봐도 잘만 나온다. 근데 유독 정기 업데이트할 때만 없다고 뜬다. 도대체 이게 뭔 일인가… 혹시 오전 7시 30분에 일괄적으로 업데이트하면서 요청이 몰려 실패하나 라는 생각이 들었다. 물론 고작 수십개의 요청가지고 뱉어낼 거라 생각하진 않지만.. 그럴 수 있다고 생각해 5번이나 재시도 하도록 처리해놨다. 근데도 안된다. 하… 진짜 너까지 왜그러냐 .. ...

2024년 9월 2일 · 2 분 · 배준수

능동적인 노력

오랜만에 쓰는 에세이. 매 주 뒹굴거리며 게임만 하는 주말에서 벗어나 혼자 카페에 나와 앉았다. 특별한 일이 있는건 아니지만 최근 머릿속이 참 복잡해져 정리할 필요가 있다고 느꼈다. 지금까지 나는 어떻게 지내왔는지, 지금 여러 생각이 드는 이유는 무엇인지, 내가 미처 모르고 있던 부분은 있는지 확인해볼까 한다. 어느덧 회사에 들어온 지 10개월이 되었다. 나름 점수를 주자면 그래도 후하게 주고 싶다. 다양한 주제의 스프린트를 진행하면서 새로운 기능 개발을 많이 해봤다. 새로운 서비스 출시를 준비하면서 서버도 두개나 만들었다. 인수인계 받은 서비스도 무난히 유지보수 중이다. 서비스의 방향성을 생각하며 확장성 있는 데이터베이스를 설계했던 것, 기존에 고려하지 않았던 확장을 하기 위해 기존 데이터베이스에서 수정한 것, 히스토리를 모르는 부분에서 지속적으로 발생하는 오류를 수정했던 것들까지 모두 나에게 피와 살이 되주었다. 더 잘, 더 빠르게, 더 좋은 서비스를 만들기 위해 열심히 노력했다. 입사 전의 나와 비교해보면 개발자로서 구색이 정말 많이 갖춰졌음은 틀림없다. ...

2024년 9월 1일 · 3 분 · 배준수

데이터베이스 구조 설계

Today I Learned 날짜 2024년 8월 30일 금요일 내용 데이터베이스 구조 짜기 새로운 스프린트를 들어가면서 서버를 파야한다. 데이터베이스 구조를 고민하는데 참 여러모로 쉽지 않다. 네이버 플랫폼 확장이 이뤄질 것이다 보니.. 중요한 포인트는 플랫폼은 네이버와 쇼피파이가 될 예정 가져올 인스타그램 계정 종류는 두가지다. 인스타그램 비즈니스 계정과 일반 계정 인스타그램 비즈니스 계정은 필수적으로 페이스북 페이지와 연결되어있다. 네이버에서 어떤 데이터를 어떻게 사용할지 모른다. 가장 중요한건 확장성이라고 판단했고, 기존 알파플러스를 유지보수하고 개선하면서 가장 힘든게 최상위 데이터가 플랫폼에 종속되어 있다는 점이었다. 그땐 그게 당연헀으니까… 그래서 이번엔 최상위 테이블을 외부 데이터와 전혀 관련되지 않게 만들었다. ...

2024년 8월 30일 · 1 분 · 배준수

또 기능 개발

Today I Learned 날짜 2024년 8월 29일 목요일 내용 다시 또 새로운 서비스 인스타그램에서 댓글을 가져오는 서비스를 만들었다. 이걸 더 발전시키는 스프린트를 시작했다. 기존 알파플러스에 붙어있던 걸 떼내고 새로운 기능을 추가해야 한다. 단, 다음 스프린트로 진행할 네이버 스마트스토어에 들어가는 것을 고려해서 짜야 한다. 플랫폼이 늘어날 것이기 때문에 유저를 최상단 테이블로 설정했다. 이전 알파플러스를 유지보수하면서 가장 힘들었던 점은, 늘어날 걸 예상하지 못한채 짜여져있다는 점이었다. 예를 들어, 기존 프로덕트 리뷰만 있는 상태에서 AI, 리스트 디자이너, 브라우저 부스터(심지어 다른 앱)이 늘어나면서 어떤 샵이 사용중인 서비스들의 상태를 저장하기 꽤나 곤란했다. 결국은 json 타입으로 설정해서 변경에 자유롭게 해뒀지만 이 데이터를 다루는게 꽤나 거추장스러웠다. 특히 다른 앱이지만 같은 시스템을 공유하는 브라우즈부스터때는 두 개의 샵 테이블이 서로 영향을 끼치면서 발생하는 문제는 정말 골치아팠다. ...

2024년 8월 29일 · 2 분 · 배준수

추상클래스의 작동 방식

Today I Learned 날짜 2024년 8월 28일 수요일 내용 전환데이터의 종류 네이버 검색광고에도 전환 데이터에 대한 타입이 추가되었다. 제공되는 전환수와 값이 어떤 전환에 대한 데이터인지를 구분해서 준다. 회원가입, 장바구니 담기, 구매 완료, 등등 8가지 종류가 있다는데 정확히 무엇을 의미하는지는 나도 몰?루. 그냥 나눠서 제공해야하니 구현했다. 처음엔 일단 모든 데이터를 가져오되, 현재는 합쳐져 있는 데이터를 전환 종류에 따라 분류해서 들고있으려고 했다. 모두 들고 저장은 하되, 구글 스프레드시트에 넣을 때만 필요한 전환 종류의 데이터만 넣도록 만드는게 목표였다. 이유는 ...

2024년 8월 28일 · 4 분 · 배준수