개발 신입 ~ 1년차 회고🤔
·
개발일지/개인 회고
0️⃣ 취업 준비 기간 — 현실을 직시하기취업 준비 기간 동안은 스스로를 객관적으로 바라보는 연습을 정말 많이 했다.내가 가진 실력, 그리고 시장에서의 위치를 냉정하게 보려고 했다.(냉정하게 볼수록 처참했다..)그래도 그와중에 세운 기준은 단 두 가지였다.첫 회사는 ‘배울 수 있는 곳’이어야 한다.최저임금을 당당하게 제시하는 회사에는 가지 않는다.최저임금을 달아두고 상시로 인원을 뽑는 회사에 가면,, 안그런 회사도 물론 있겠지만,, 앞으로의 내가 개발자커리어를 계속 이어가고 싶을까?(아니요..)그래서 월급보다는 배울 수 있는 환경을, 화려한 회사명보다는 사람과 분위기를 보기로 했다.다행히도, 당시 참여하던 취업 연계 프로그램을 통해 여러 기업 중 일부에 이력서를 제출할 수 있었고, 그중 면접 분위기가 가..
X(Twitter) API 캐싱 도입 (2편)
·
개발일지/개발로그 (실무)
1차 캐싱 적용 이후 실제 운영 환경에서 QA를 진행하던 중 콜드스타트(Empty Cache) 문제가 발생하였다.초기 조회 시 트윗이 없을 경우, 빈 캐시가 TTL 동안 유지되어 신규 트윗이 반영되지 않는 현상이 확인되었는데,이는 since_id 기반 비교 로직이 “LastId 없음(null)” 상태를 올바르게 처리하지 못해 전체 갱신이 생략되는 것이 원인이었다. 👀 What I Faced초기 조회 시 0건인 상태 → 빈 캐시 저장15분 내 새 트윗이 생성되어도 search/recent 호출 시 hasNew=false 로 판단캐시 만료 전까지 계속 0건 반환TTL 만료 후 /users/:id/tweets 전체 조회 시점에서야 데이터 갱신🧩 Root Cause / Theory캐싱 로직이 “빈 캐시 +..
X(Twitter) API 캐싱 도입 (1편)
·
개발일지/개발로그 (실무)
Introduction서비스 특성상 SNS 연동을 핵심 기능으로 삼고 개발을 진행하던 중, Rate Limit이라는 문제에 직면하게 되었다.인스타그램 API는 비교적 호출 한도가 여유 있었지만, X(Twitter) API는 훨씬 더 제한적인 호출 정책을 가지고 있었다.특히 /2/users/:id/tweets 엔드포인트는 사용자별 15분당 5회라는 매우 낮은 호출 한도를 가지고 있어,다수의 인플루언서 데이터를 동시에 처리해야 하는 서비스 환경에서는 사실상 실시간 조회가 불가능한 구조였다. 이 문제를 해결하기 위해 캐싱을 통한 호출 최적화를 도입했고,그 결과 Rate Limit을 회피하면서 일정 수준의 실시간성을 확보할 수 있었다.하지만 이후 실제 운영 환경에서 캐싱 정책의 한계와 예외 상황이 드러나면서, ..
개발블로그 다시 시작✨
·
개발일지
어영부영 개발자로서의 커리어를 쌓으면서 오랜만에 블로그를 들어왔는데, 생각보다 보고 가시는 분들이 계시네요😀처음 개발공부를 시작하는 분들, 코딩을 하다가 정보를 찾아 떠돌다 한번씩 들어오는 분들이 계시는것 같습니다!비전공자 부트캠프 출신 (무려 두번 ㄷㄷ )개발자로서, 고민도 많고, 앞으로의 개발자로서의 커리어가 늘 걱정되지만, 다시 개발로그에 천천히 현재 개발자로서 겪고있는 문제, 트러블 슈팅, 공부내용 등등 조금씩 기록해보고자 합니다. 백엔드 자바스프링으로 시작해서, 현재 풀스택개발자로 C#, TypeScript, postgresql을 사용하여 자회사 BtoC 서비스 오픈베타 직전에 있습니다. 베타 잘됬으면 좋겠다!!
team2_로컬..
·
카테고리 없음
보호되어 있는 글입니다.
ORM(객체 관계 맵핑, Object-Relational Mapping)
·
항해
객체 지향 프로그래밍 언어와 관계형 데이터베이스 간 데이터변환을 자동화하기 위한 프로그래밍 기술 및 도구 집합 ORM 은 객체 지향언어(ex. java, python, c#)와 관계형 DB(ex. MySQL, Oracle, PostgreSQL)사이에서 데이터를 주고 받는데 사용된다! ORM 대표 예시 Hibernate(Java), Entity Framework(C#), Django ORM(Python), SQLAlchemy(Python) 등 ✔️ORM의 주요 기능 객체와 테이블 맵핑 : 객체 지향 프로그래밍에서 사용되는 클래스와 관계형 DB의 테이블 간 맵핑을 제공한다. 각 클래스는 DB테이블과 연결되고 클래스의 속성은 테이블에 열에 대응되게 된다. ex. SELECT * FROM user; 라는 que..
DI(Dependency Injection)
·
카테고리 없음
DI(Dependency Injection)? 해당 기술의 장점. 💡 DI란? 객체간 의존성을 명시적으로 정의하고, 객체간의 결합도를 줄이기 위한 디자인 패턴 객체를 생성하고 관리하는 코드에서 객체 간 의존성을 외부에서 주입하는 방식으로 작성할 수 있다. 내부 생성을 하는 것은 무엇? → 개발자? ㄴㄴ 스프링(IOC : 제어의 역전) →코드의 재사용성과 유지보수성이 높아지며, 객체 간 의존성이 줄어들어 유연성과 확장성이 높아진다. 방법 3개! 생성자를 통한 의존성 주입(권장) 프로퍼티를 통한 의존성 주입 인테페이스를 통한 의존성 주입(추상화 개념 → 완벽하게 분리되서 결합도를 낮출 수 있다.) 장점 유연한 코드 작성 가능 DI를 이용하면 객체 간의 결합도를 낮출 수 있으므로 코드의 유연성과 재사용성이 높..
WIL : HTTP, MVC 패턴
·
항해
✔️HTTP ▸ 웹 브라우저와 웹 서버 간 데이터를 주고 받기 위한 통신 프로토콜. ▸ 웹페이지를 요청하고 응답하는데 사용 ▸ Client - Server 모델을 기반으로 동작 ▸ 요청 메서드(GET, POST 등) & 응답 코드(200 OK, 404 Not Found 등)을 사용하여 데이터를 주고받음 HTTP 에는 언제나 Request, Response 개념 존재 Client(사용자, 자료에 접근할 수 있는 프로그램)가 브라우저를 통해 서비스를 request하면 Server(자료에 대한 접근을 관리하는 시스템)에서 해당 요청에 맞는 결과를 Client에 response로 동작 request : client → server response : server → client 클라이언트에서 메뉴를 주문하면, ..