Posts
zz9z9
Cancel

WEB - TCP vs UDP, 그리고 네트워크 진단 도구들

네트워크 팀과 소통하다 보면 “그 서버로 telnet 한번 때려보세요”, “traceroute 결과 좀 주세요” 같은 얘기를 자주 듣는다. 그런데 정작 그 도구가 뭘 하는 도구인지, 왜 그걸 쓰라는 건지 모르면 결과를 봐도 해석을 못 한다. 특히 네트워크 팀에서 “ACL 열어드렸어요”라고 했는데 telnet이 안 되면, 이게 네트워크가 안 열린 ...

WEB - WAF, SNAT, DNAT 등 (서버 이전하면서 헷갈렸던 개념들 정리)

최근 회사에서 서버 이전 작업을 하면서 헷갈렸던 개념들을 정리해본다. FW vs WAF — 왜 방화벽이 있는데 또 필요한가 이름이 둘 다 “방화벽”이라 헷갈리지만 검사하는 계층이 다르다.   FW (방화벽) WAF (Web Application Firewall) ...

Spring - @Async 살펴보기 (JDK Executor를 곁들인..)

JDK의 Executor / ExecutorService / ThreadPoolExecutor Spring의 TaskExecutor / AsyncTaskExecutor / ThreadPoolTaskExecutor 비슷한 이름의 클래스들 정리 및 @Async 동작까지 살펴보자. Executor 공식문서 제출된 Runnable 작업을 실행하는 ...

Java - PreparedStatement는 어떻게 SQL Injection을 방어할까 (feat. MySQL)

java.sql.Statement (Interface) 공식문서 : “The object used for executing a static SQL statement and returning the results it produces.” users 테이블 id name pw ...

오늘 드는 생각 (260511, AI 시대와 나)

개인적으로 Claude Code를 사용하게 되면서, 코드를 직접 작성하는 데 쓰는 시간은 거의 0에 가깝다고 해도 과언이 아니게 된 것 같다. 작년 말부터 지금까지 반년 정도 사용하면서 느낀 점과, AI를 어떤 태도로 활용해야 할지에 대한 생각을 정리해보려고 한다. 느낀 점 생산성이 비약적으로 높아졌다. 코드의 퀄리티는 기존 코드베이스나 ...

오늘 드는 생각 (260510, 관성)

쉬기 시작하면 계속 쉬고 싶어진다. 쉽게 도파민을 얻는 것들도 마찬가지다. 유튜브를 보거나, 배달 음식을 시켜 먹거나, 별생각 없이 돈을 쓰는 행동들은 순간은 즐겁지만 남는 건 별로 없는 것 같다. 반대로, 당장은 조금 힘들더라도 꾸준히 했을 때 시간이 지나며 빛을 발하는 것들이 있다. 멋진 몸은 반복된 웨이트 트레이닝의 결과물이고 내...

오늘 드는 생각 (260406, 견고한 삶)

개발자로서 견고한 시스템을 만든다는 건, 단순히 기획서에 있는 요구사항이 정상적으로 동작하게 만드는 것 이상이라고 생각한다. 정말 중요한 건, 시스템이 정상적으로 작동하기 위한 전제조건이 깨졌을 때 대비책이 마련되어 있는지인 것 같다. 즉, 시스템의 안정성은 ‘정상 상황’이 아니라 ‘예상하지 못한 상황’에서 얼마나 잘 버티는지에 달려 있다고 본다. ...

JPA / MyBatis 혼용시 주의사항 (in 배치 애플리케이션)

JPA와 MyBatis는 서로의 존재를 모른다. MyBatis는 JDBC를 직접 사용하므로 JPA 영속성 컨텍스트를 우회하여 DB를 변경하고, JPA는 이를 감지할 수 없다. 결과적으로 JPA 1차 캐시에는 변경 전 데이터(stale data)가 남게 되어 데이터 불일치가 발생한다. 문제 상황 예시 1. 같은 엔티티를 JPA로 읽고 ...

이슈 - JpaItemWriter로 엔티티 저장시, ChunkSize만큼 SELECT 쿼리 발생하는 상황

상황 배치 애플리케이션에서 A 테이블에서 조회 -> 가공 -> B 테이블에 저장 흐름으로 동작하는 청크 기반의 Job이 있음 B 테이블에 저장시 JpaItemWriter 사용 B 테이블에 저장하는 엔티티의 PK는 A 테이블의 PK와 동일. 즉, A 테이블에서 조회한 엔티티의 PK가 사용됨 (Assigned ID + @Vers...

JPA/Hibernate ID 생성 전략

@GeneratedValue 기본 키(primary key) 값의 생성 전략을 지정하는 데 사용 즉, 데이터베이스에 새 레코드를 삽입할 때 기본 키 값을 자동으로 생성하는 방법을 지정 @GeneratedValue는 @Id와 함께 엔티티 또는 매핑된 슈퍼클래스의 기본 키 속성이나 필드에 적용할 수 있다. @GeneratedValu...