| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 밤리단길 맛집
- 회고
- 합정포케
- 무이네 사막투어
- 혼공컴운11기
- 호치민 여행
- OS
- 혼공학습단
- 무이네투어
- 기술부채
- 호치민여행
- 베트남여행
- 혼공학습단12기
- 혼공컴운
- 합정 맛집
- 호치민
- 합정맛집
- 호치민 맛집
- cs
- 자료구조
- 한빛미디어
- 양꼬치
- 핑크성당
- 니코호텔
- Redis
- 포케맛집
- 혼공네트
- 호치민 무이네
- Docker
- 연어포케
- Today
- Total
목록Dev (25)
경험은 나의 것
1. 들어가며MSA를 공부할 필요가 없다는 게 아니라.. 모놀리식의 이점을 말해드리고 싶었습니다.AI Driven Development가 대세잖아요. 이제는 단순한 AI 어시스턴트 수준을 넘어서, PRD와 기획서를 잘 만들어서 넘겨주면 스스로 계획을 세우고 실행까지 마치는 AI 에이전트의 시대입니다. 심지어 PRD도 같이 만드는데요..단순히 시키는 코드만 짜주는 게 아니라, 복잡한 목표를 스스로 하위 작업으로 쪼개고 필요한 도구를 골라가며 결과를 만들어내는 얘네들이 개발을 진짜 기가 막히게 하거든요.물론 MSA는 여전히 중요하다고도 얘기할 수 있을 것 같습니다. 특히 대규모 조직에서는 더욱더요. 백엔드 개발자라면 분산 시스템의 원리를 알아야 합니다.왜 이렇게 되었는지를 따라오다 보면 분산 시스템의 원리를..
문제 상황Local 에서 작업중인 Spring Boot Project를 git에 최초로 푸시하던 중 다음과 같은 에러가 발생했습니다.$ git push -u origin masterEnumerating objects: 127, done.Counting objects: 100% (127/127), done.Delta compression using up to 10 threadsCompressing objects: 100% (102/102), done.error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400send-pack: unexpected disconnect while reading sideband packetWriting ob..
Spring PSA가 주는 편리함에 간과한 본질을 마주했다.‘설정 한 줄’로 끝났던 세션이, 동시성이라는 점 때문에 어떻게 변하는지 기록하려고 한다.1. 편한 PSA & 착각서비스를 확장하며 WAS 간 세션 정합성 문제를 해결해야 했다.Spring은 spring.session.store-type=redis라는 설정 한 줄로 복잡한 과정을 추상화 해주었다.이러한 설정이 스프링이 말하는 PSA의 기능이겠지만, 솔직히 그때는 '참 편하다' 하고 대수롭지 않게 넘겼다.하지만 운영 환경에서는 예상치 못한 동작을 확인할 수 있었다.비즈니스 로직을 전혀 수정하지 않아도 모든 것이 해결되었다고 생각했고, 차후에 설계 결과로 인해 데이터가 유실되는 현상을 볼 수 있었다.2. 분석: Redis Hash와 Spring의 ‘..
2025년은 무언가를 크게 성취한 해라기보다, 오랫동안 미뤘던 것들을 직접 해보기 시작한 해였다. 생각을 행동으로 옮기며, 실행하는 관성을 만들려고 노력했다.1. 조직과 문화: CVS에서 Git으로우리 팀(사실상 회사 전체)은 정보처리기사 필기 서적에나 존재할 법한 구시대의 유산인 CVS를 사용하고 있었다. 신규 프로젝트를 시작하며 더 이상은 미룰 수 없다고 판단했고, 팀에 Git 도입을 제안했다. 단순히 최신 트렌드여서가 아니라, 기존 방식이 가진 구조적 결함이 팀의 생산성에 저하되었기 때문이다.논리와 근거를 통한 설득: 거창한 지표는 아니더라도, 파일 단위로 관리되는 CVS에서 커밋이 깨질 때마다 발생하는 비효율과 이력 추적의 불확실성을 가감 없이 짚었다. "왜 지금 바꿔야 하는가"에 대해 내가 느낀..
1. 배경: 세션 탈취 글을 쓰고 나서spring: session: store-type: redis지난 글에서 Spring Session이 Filter와 Decorator 패턴으로 세션 저장소를 Redis로 바꿔치기하는 과정을 알아봤다."Filter가 요청을 가로챈다고 했는데, 그럼 요청은 정확히 어디서부터 시작해서 Controller까지 갈까"그래서 이번엔 Spring 코드를 직접 까보면서 HTTP 요청의 전체 흐름을 파악해보자.2. 디버깅으로 흐름 추적하기일단 간단한 Controller를 하나 만들고, Get 요청 후 Call Stack을 확인해봤다.@RestControllerpublic class TraceController { @GetMapping("/trace") public ..
1. yml 파일의 설정 한 줄로 바뀌는 세션 위치spring: session: store-type: redis # 이 한 줄이 핵심! redis: namespace: spring:session data: redis: host: localhost port: 6379현재 진행 중인 프로젝트에서 무중단 배포(Blue/Green) 환경 구축과 세션 정합성 문제를 해결하기 위해 Redis를 도입하게 되었다.build.gradle에 Spring Session Data Redis 의존성을 추가하고, application.yml에 간단한 설정 몇 줄을 추가했다. 기존 비즈니스 로직 코드를 단 한 줄도 수정하지 않았는데, 세션 저장소가 Tomcat 메모리에서 Redis로..
토스 Learner's High 서버 2기 | Notion토스 Learner’s High 서버 2기의 주인공이 되어보세요!tosspublic.notion.site 개발자라면 하나씩은 있는 개발자 취업/정보교류 채팅방에서 토스에서 서버 개발자 멘토링 과정을 진행한다는 이야기를 처음 들었을 때, 해보고 싶다는 생각이 먼저 들었다.그러다 중국 여행을 다녀온 당일인 11월 30일, 그 기억이 다시 떠올라 이력서를 다시 정리해 지원했고,토스 Learner's High 서버 2기 과정에 참여하게 되었다. 이번 한 달은기술 스택을 더 늘리는 시간이라기보다는,토스에서는 어떻게 일하는지,그리고 내가 앞으로 어떤 방향으로 나아가야 할지를 고민하는 개발자로 성장하는 시간으로 만들고 싶다. 단순한 멘토링이 아니라 스스로 목표..
배경프로젝트 초반에는 늘 그렇듯, '일정 준수'가 가장 중요했습니다. 백엔드와 화면을 동시에 개발해야 했기에, 가장 빠르고 직관적인 방법을 선택했죠. 바로 하나의 Controller에서 View와 Data를 모두 처리하는 구조였습니다.당시에는 가장 효율적인 선택이라고 생각했지만, 프로젝트 규모가 커지고 새로운 모듈을 도입하려다 보니 이 구조가 발목을 잡기 시작했습니다.당시의 코드@RequestMapping("/api")class TotalController( private final TotalService service;) { @GetMapping("/form") public String form(){ return "form"; } // DataTables 라이브러리 스펙 ..
Wireshark · Display Filter Reference: IndexWireshark: The world's most popular network protocol analyzerwww.wireshark.org - 패킷 1 송신지 포트 : 49859수신지 포트 : 80Sequence Number : 3588415412SYN : 1ACK : 0 - 패킷 2 송신지 포트 : 49859수신지 포트 : 80Sequence Number : 35884154123확인 응답 번호: 697411256SYN : 1ACK : 1 - 패킷 3 송신지 포트 : 49859수신지 포트 : 80Sequence Number : 3588415413확인 응답 번호: 697411257SYN : 0ACK : 1 ..
시작한 지 얼마 되지도 않은 것 같은 혼공학습단 12기도 얼추 75%를 넘겼다 혼자 공부하는 네트워크는 이미 한번 읽었던 책이라 좀 더 수월하게 할 수 있었던 것 같다. 이번주에는 OSI 7계층 중 7계층에 해당하는 응용 계층에 대해서 알아봤습니다. 응용 계층의 첫번째 챕터는 DNS와 자원이다. 통신을 하기 위해서는 IP주소 이외에 도메인 네임을 사용할 수 있다.URL : 위치 기반의 식별자URN : 이름 기반의 식별자 도메인 네임과 네임서버도메인 네임과 IP는 네임서버에서 관리 (DNS 서버) 도메인 네임은 계층적으로 분류된다.1. root 도메인2. TLD 도메인3. SLD 도메인전체 주소 도메인 : FQDN 이렇게 계층적이고 분산된 도메인 네임에 대한 관리 체계를 도메인 네임 시스템이라고 한다. ..