전체 글 21

트랜잭션과 격리 수준

안녕하세요 오늘은 트랜잭션에 대해서 알아보겠습니다. 트랜잭션은 단순히 데이터베이스에만 국한된 게 아니라 애플리케이션을 설계하는데 엄청 중요한 개념입니다. 일단 트랜잭션이 필요한 이유를 알아보도록 하겠습니다. 트랜잭션은 여러 DB 작업을 하나의 작업 단위로 묶는 것을 말합니다.여러 작업이 하나의 트랜잭션에서 실행될 때 모든 작업이 성공하면 commit, 하나라도 실패하면 rollback이 이루어집니다. 쉽게 예를 들면 단골로 나오는 계좌 송금 작업입니다.A 계좌에서 B 계좌로 만원을 보낸다고 한다면, A 계좌에서는 만원을 차감하는 작업과 B 계좌에서는 만원을 증가하는 작업이 동시에 이루어져야 합니다.만약 A 계좌에서 돈은 빠져나갔는데 B 계좌에 돈이 들어오지 않는다면 큰 문제가 발생하겠죠 그래서 이런 작업..

[데이터베이스] EXPLAIN - 실행 계획

안녕하세요 오늘은 Explain 실행 계획에 대해서 알아보도록 하겠습니다.EXPLAIN : SQL을 실행하기 전에 데이터베이스가 해당 쿼리를 어떤 방식으로 실행할지 보여주는 실행 계획 데이터베이스에서 Explain은 정말 중요한 기능입니다.설명에서 알 수 있듯이 Explain은 SQL을 실행하기 전 DB의 옵티마이저가 어떤 식으로 쿼리를 실행할지 예측할 수 있기 때문에 인덱스를 부여했을 때 인덱스가 동작하는지, 몇 개의 row를 읽고 어느 정도를 버릴지 등 정보를 알 수 있습니다.예를 들어 10만 개의 데이터에서 9만 개의 row를 읽고 그중 5퍼센트만 통과해서 대략 4,500개의 데이터를 얻게 된다면 눈으로 보이는 건 4,500개지만 실제로 읽은 row의 수는 9만 개이기 때문에 그다지 효율이 좋다고 ..

[AI 도구] ChatGPT - Codex 앱으로 사용하기

안녕하세요 오늘은 이전 글에서 터미널에서 사용하던 Codex를 앱으로 사용해 보겠습니다. 기존 터미널에서 CLI로 사용하던 방식은 빠르게 시작할 수 있지만, 몇몇 질문이 사라진다던가 해서 이전 기록을 찾기가 좀 귀찮습니다.하지만, 앱으로 사용하면 GPT에서 채팅하는것처럼 Codex를 사용할 수 있기 때문에 좀 더 편리한 거 같아서 글을 작성해보려고 합니다. 방법은 간단합니다.먼저, ChatGPT에 들어가서 이전처럼 Codex를 눌러주시면, 아래와 같이 창이 나올것입니다.다운로드를 눌러주시고 설치를 해주시면 됩니다. 그러면 옆에 GPT처럼 새 채팅, 검색 등등 뜨고 위와 같은 화면이 뜨실 텐대요.실제로 로컬에서 Codex를 사용하면 ~/.codex/history.jsonl 경로 파일로 저장된다고 합니다. ..

이것저것 2026.06.04

[보안] JWT와 세션 어떤걸 사용해야할까?

안녕하세요 오늘은 JWT와 세션 어떤 걸 사용해야 하는지 알아보도록 하겠습니다. JWT나 세션에 대한 정보는 구글에 검색하면 많기 때문에 따로 하지는 않겠습니다.둘 다 쉽게 얘기하면 클라이언트와 서버가 인증이나 정보를 교환하기 위한 표라고 생각하면 되겠습니다. 백엔드 애플리케이션을 개발하다보면 회원가입과 로그인에서 JWT와 세션 중 무엇을 사용할지 고민이 되실 겁니다.보통 처음 백엔드를 공부해서 Spring을 사용하면, Spring Security + JWT 조합을 많이 사용하실 텐데, 그러면 이 조합이 무조건 좋은 게 아닌가라는 생각이 드실 수 있습니다. 먼저, 각자가 어떤 이유에서 사용되는지 얘기해 보겠습니다.JWT는 서버 측에 상태를 저장하지 않는 Stateless 하다는 장점이 있습니다.이러한 점..

카테고리 없음 2026.04.14

[백준] 1034 램프 - JAVA

안녕하세요 오랜만에 알고리즘 문제 풀이 글을 올려보겠습니다. 문제 링크https://www.acmicpc.net/problem/1034 풀이스위치를 조작하면 해당 열의 모든 램프가 반대로 뒤집히므로 같은 모양을 가진 row끼리만 같은 모양을 계속해서 유지할 수 있습니다.하나의 row를 전부 1로 만들었을때 해당 row와 같은 모양의 row 개수를 세서 최대값을 반환하면 됩니다. 먼저 해당 row가 스위치 횟수 K만큼 눌렀을 때 전부 1이 될 수 있는지 판별해야 합니다.먼저 K가 row의 0의 개수보다 커야 전부 1을 만들 수 있습니다. ex) K = 2, 10001이면 아무리 해도 일단 11111을 만들 수 없음만약 0의 개수만큼 스위치를 조작해서 전부 1을 만들었다면 스위치 횟수가 짝수만큼 남아있어야..

카테고리 없음 2026.04.02

[Spring] Spring은 왜 사용하는걸까? + 공부할 때 꿀팁

안녕하세요 오랜만에 글을 올립니다.그동안 이런저런 공부를 좀 하다가 스프링을 사용하는 근본적인 이유를 좀 정리했습니다. 단순히 Spring을 많이 사용하기 때문에라는 말이 아닌 Spring이라는 것이 어떤 이유로 많이 사용되는지에 대한 것을 좀 정리해보려고 합니다. 딱히 공부 방법이 궁금하지 않으시면 이 부분은 넘어가셔도 됩니다.더보기더보기Spring을 공부하시려고 책을 찾다보면 토비의 스프링이라는 책을 들어보셨을 겁니다. 저도 예전에 어떤 개발자분이 Spring 개발자라면 무조건 한 번은 완독 해야 한다 하시는 것을 봐서 실제로 저도 토비의 스프링으로 공부를 했습니다.이 책의 장점은 여러가지 궁금해할 만한 점들을 전부 세세하게 설명해 주는 것입니다. 구글링도 좋은 참고 자료이지만 대부분 단편적인 내용..

[AI 도구] ChatGPT - Codex 사용해보기

안녕하세요 오늘은 OpenAI의 Codex를 활용해보려고 합니다. 최근에 Codex를 한번 써봤는데, 여러 좋은 기능들이 있는 거 같아서 글로 작성해보려고 합니다. 일단 Codex는 Gemini의 Gemini CLI, Claude의 Claude code처럼 AI를 활용해 코드를 작성할 수 있게 도와줍니다. 먼저 ChatGPT 사이트를 들어가면 아래와같이 메뉴가 나오실 텐데 그중 Codex를 누르시면 됩니다. 그러면 이런 화면이 뜨실겁니다. 일단 제가 사용해 보고 느낀 Codex의 장점은 터미널, IDE에서 다양하게 사용할 수 있다는 것이고, GitHub에 연결하면 Repository를 선택해서 프로젝트 분석이나 코드 리뷰까지 자동적으로 가능하다는 점입니다. 일단 먼저 GitHub 연결을 하도록 하겠습니..

이것저것 2026.02.10

경험을 위한 사이드 프로젝트 설계 시 기술선정

안녕하세요 오늘은 백엔드 공부를 처음 시작하고 팀 프로젝트나 개인 프로젝트를 진행할 때 도움이 될만한 설계할 때 기술 선정에 대한 이야기를 해보도록 하겠습니다. 저도 따로 복잡한 아키텍처를 설계해본적이 없기 때문에 그렇게까지 복잡한 이야기는 하지 않을 거고, 요즘에는 졸업 작품이나 부트캠프 같은 곳에서 백엔드를 배우고 프로젝트를 한다거나 개인적으로 토이 프로젝트를 시작하시는 분들이 많은데 그런 분들을 위해 간단하게나마 이야기하고자 합니다. 일단 프로젝트에서 아키텍처는 정말 중요합니다. 아키텍처를 통해 이 프로젝트가 어떤 기술을 사용하고 있고 어떻게 데이터가 흐르는지 볼 수 있기 때문입니다. 일단 이글을 쓰는 이유와 일화를 먼저 말씀드리자면저도 처음 팀 프로젝트를 했을 때 저와 팀원들 전부 모든 데이터를 ..

CS/시스템 설계 2026.02.06

[Spring] - DI (Dependency Injection) - 2

DI에 관한 글을 적어놓고 다음 포스트에서 더 이야기한다고 했지만, 이것저것 하느라 바빠서 시간이 별로 없었습니다.그래서 이제야 2장을 쓰게 되는데 사실 1장을 작성하고 2장으로 어떤 걸 작성하려 했는지 잘 기억이 나지 않아서 제가 적고 싶은 대로 적어보려고 합니다. 일단 1장을 먼저 간단하게 요약하겠습니다.자바는 객체 지향 언어로서 5가지 주요 원칙이 있는데, 이 원칙들의 궁극적인 목표가 가독성이 좋고, 유지보수성이나 확장성이 좋은 코드를 작성하는 것입니다.그중 단일 책임 원칙이나 인터페이스 분리 원칙을 보면, 각 객체는 하나의 책임만을 가져야 하고, 자신이 사용하지 않는 메서드는 들고 있을 필요가 없다는 것을 뜻합니다.그래서 이것을 쉽게 말하자면 결국 객체에 쓰지도 않는 기능을 넣지 말고, 한 번에 ..

[Spring] DTO와 Entity 변환에 대하여

안녕하세요 오랜만에 포스팅합니다. 사실 다른 내용도 올렸어야 했지만, 이것저것 하느라 바빴어서 그동안 시간이 없었는데 오랜만에 제가 올리고 싶은 내용으로 왔습니다.요즘 백엔드로 Spring + JPA를 많이 시작하고 공부하는 사람들이 많아졌는데요, 여러 강의를 듣다 보면 DTO와 Entity에 대한 이야기를 많이 들으실 겁니다. 해당 내용에 대한 이론을 설명하는 글은 아니라서 간단하게만 이야기하면 Entity 같은 경우는 테이블과 매칭되는 클래스를 정의한 것으로 주로 Service단에서 DB와 통신하는 과정에서 사용되고, 여러 이유로 Entity를 그대로 API를 호출하는 클라이언트에 전달할 수 없기 때문에 DTO라는 형태로 내보내게 됩니다. 그래서 공부하다보면 의문이 생기게 됩니다. "Entity와 D..