전체 글 36

[DB] MyBatis란?(JPA와 비교)

MyBatis는 무엇이고, 왜 쓰는 걸까?최근에 MyBatis를 다시 정리하면서 느낀 건,이건 ORM이 아니라 **‘SQL을 포기하지 않는 선택지’**라는 거였다.Java에서 데이터베이스에 접근하는 방식은 크게 보면 세 가지 정도로 나뉜다.JDBCORM (JPA, Hibernate 등)SQL Mapper (MyBatis)JDBC는 너무 로우레벨이고, JPA는 매우 많은 걸 대신해준다.MyBatis는 그 중간 어딘가에 있다.1. JDBC부터 생각해보면JDBC로 DB를 다뤄보면 이런 코드가 나온다.Connection 열고PreparedStatement 만들고파라미터 세팅하고ResultSet 순회하고객체에 값 매핑하고finally에서 닫고...기능은 단순한데 코드가 길어진다.그리고 실수할 여지도 많다.그래서 ..

CS/DB 2026.02.08

[DB] JAVA와 데이터베이스(JDBC, ORM,Java SQL 라이브러리,MyBatis)

자바에서 DB를 다루는 3가지 방식서버든 데스크톱이든 Java 애플리케이션이 DB에 접근하려고 하면 결국 아래 질문들을 만나게 된다.개발을 자바 우선으로 할까, DB 우선으로 할까?자바 클래스를 먼저 만들고 테이블을 맞출지테이블(스키마)을 먼저 만들고 자바 코드를 맞출지SQL은 누가/어떻게 실행할까?단순 CRUD부터 복잡한 리포팅 쿼리(분석 함수 등)까지 실행 방식은?자바 객체 ↔ DB 테이블/행 매핑을 얼마나 편하게 할까?객체를 저장하면 INSERT가 되고조회 결과를 객체로 바꾸는 일을 누가 담당할까?예를 들어 아래 같은 자바 클래스가 있고,public class User { private Integer id; private String firstName; private String l..

CS/DB 2026.02.08

카카오 소셜로그인 access Token 직접 발급하는 법(in 카카오 디벨로퍼 kakao developers)

스프링 부트에서 소셜로그인 토큰 발급 방식으로 로그인을 구현했는데프론트 없이 swagger 나 postman으로 테스트 해보고 싶은 경우가 있다. 그런 경우에 접근 권한이 없는 경로는 카카오 로그인이 필요한데, 이때 카카오 디벨로퍼에서 제공하는 테스트 도구를 이용하면 엑세스 토큰을 발급 받을 수 있다. 도구> REST API 테스트의 도구 바로가기 인증 앱 옆의 햄버거 버튼 클릭해서 토큰을 발급하고 싶은 앱을 선택해주고 엑세스 토큰의 토큰 발급 버튼을 눌러주면 엑세스 토큰이 발급된다. 그러면 엑세스 토큰이 발급되어 칸에 나타난다. 혹시 로그인을 했을때 아래처럼 허용되지 않은 ip라고 로그인이 안된다면401 Unauthorized: \"{\"msg\":\"ip mismatched! callerIp=xxx..

[DB]DB Replication(DB 이중화)설정 - master slave 설정

DB 재해 복구 방법 중에 하나인 db replication 설정을 해보겠다.DB Replication(이중화)란?:실시간 또는 일정 주기로 데이터를 다른 서버에 복제하는 방식- 장점: 빠른 복구 가능, RPO(Recovery Point Object: 데이터 손실 허용 범위) 감소- 단점: 설정과 유지 비용 증가 말하자면 master 데이터에 변동이 있을때 마다 binary log파일에  저장을하고 그걸 slave가 복사해가는 것이다. DB 서버 Replication 설정: 한쪽은 master 한쪽은 slave(slave가 master에 있는 데이터를 복사해감==replication) 1. MASTER1) master db 서버 설정아래 명령어로 설정 파일로 들어가서 편집한다.vi /etc/mysql/m..

CS/DB 2025.03.16

[DB]데이터 베이스 재해복구(Disaster Recovery, DR)

1. 재해복구의 주요 목표 (RTO & RPO)RTO (Recovery Time Objective, 복구 목표 시간)장애 발생 후 정상적인 서비스로 복구하는 데 걸리는 최대 허용 시간짧을수록 좋지만 비용이 증가함RPO (Recovery Point Objective, 복구 시점 목표)데이터 손실 허용 범위 (마지막 백업 이후 허용 가능한 최대 데이터 손실 시간)낮을수록 데이터 손실이 적지만 비용이 증가함2. 데이터베이스 재해복구 방법(1) 백업 및 복구(Backup & Restore)주기적으로 데이터를 백업하고 필요 시 복구하는 방법장점: 비용이 저렴하고 간단함단점: 복구 시간이 길고 RPO가 커질 수 있음방식:전체 백업 (Full Backup)차등 백업 (Differential Backup)증분 백업 (..

CS/DB 2025.03.16

[DevOps]📌 Ubuntu 22.04에서 Kubernetes 클러스터 환경 세팅 (마스터 1대 + 워커 2대)

🎯 목표:가상머신 3대(Master 1개 + Worker 2개)를 이용해서 Kubernetes 클러스터를 설치하기 위한 사전 준비를 진행할 거야!CPU 2개, 메모리 4GB를 가진 가상머신이 필요해.✅ 1️⃣ 호스트 이름(컴퓨터 이름) 설정각 가상머신(서버)의 이름을 지정해줘야 해.서버의 역할에 따라 이름을 다르게 설정해야 나중에 관리하기 편해!🔹 할 일마스터 서버: master워커 서버 1: worker01워커 서버 2: worker02📌 실행할 명령어 (각 노드에서 실행)vi /etc/hostname➡ 파일을 열고 아래처럼 변경해줘!master # (마스터 노드에서는 이렇게 설정)worker01 # (첫 번째 워커 노드에서는 이렇게 설정)worker02 # (두 번째 워커 노드에서는 이렇게 ..

Programming/DevOps 2025.03.12

[Linux] vi 명령어 정리

vi 편집기의 모드(command, Edit, LastLine 모드)동작명령어vi 시작vi [경로]명령 모드esc편집 모드i, a, ovi 종료 :wq(w저장 q종료)Last Line 모드:Command 모드(esc)커서이동방향키동작 명령어G가장 마지막 줄로 이동gg첫번째 즐로 이동[n]Gn번째 줄로 이동$커서가 위치한 줄의 맨 끝으로 이동0커서가 위치한 줄의 맨 앞으로 이동w커서가 한 단어씩 오른쪽으로 이동b커서가 한 단어씩 왼쪽으로 이동 (2) 삭제명령어동작x한 문자 삭제, 또는 Edit모드에서 백 스페이스나 Delete 키로 삭제dd커서가 위치한 한 줄을 삭제 d[커서 이동]커서 이동하는 만큼 삭제 (3) 수정명령어 동작r커서가 위치한 부분의 문자 하나를 입력하는 문자로 대체uCtrl + z 처럼 ..

CS/Linux 2025.03.11

[DevOps] Docker와 Container(feat. 도커와 가상머신의 차이)

Docker: 서버를 더 빠르고 가볍게 만드는 마법 같은 도구 🚀Docker란?Docker는 리눅스의 Container기술을 이용하여 애플리케이션을 격리된 환경에서 실행할 수 있도록 도와주는 도구다. 이걸 사용하면 내가 만든 프로그램이 어디서든 똑같이 동작한다.예를 들어, 내 컴퓨터에서는 잘 돌아가는데 서버에서는 오류가 나는 경험 해본 적 있지 않은가? Docker는 이런 문제를 깔끔하게 해결해준다.컨테이너(Container)란?컨테이너는 일종의 독립된 박스라고 생각하면 쉽다. 이 박스 안에는 프로그램, 라이브러리, 환경설정 파일까지 내가 원하는 걸 다 담을 수 있다. 덕분에 컨테이너가 돌아가는 곳이라면 어디서든 똑같은 환경에서 프로그램을 실행할 수 있다.과거에는 **가상머신(VM)**을 사용했지만, ..

Programming/DevOps 2025.03.10

[SPRINGBOOT] 멀티 모듈 설정하기

Spring 멀티 모듈이란?Spring Framework로 하나의 서비스를 구현하는데 있어각자의 기능이 나뉜 여러대의 서버로 구성하는 것이다. 루트 모듈 설정/src 폴더 삭제필요가 없다.build.gradle 수정subprojects { compileJava { sourceCompatibility=17 targetCompatibility=17 apply plugin: 'java' apply plugin: 'java-library' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' } dependencies { implem..

이진 탐색 트리(Binary Search Tree, BST)

이진 탐색 트리(Binary Search Tree, BST)이진 탐색 트리(BST)는 이진 트리의 한 종류로, 특정 규칙에 따라 데이터를 저장하여 탐색, 삽입, 삭제 등의 연산을 효율적으로 수행할 수 있습니다.특징구조:각 노드는 최대 2개의 자식 노드를 가질 수 있습니다.노드에는 키(key)와 데이터가 저장됩니다.속성 (Binary Search Property):왼쪽 서브트리의 모든 노드 값은 현재 노드 값보다 작습니다.오른쪽 서브트리의 모든 노드 값은 현재 노드 값보다 큽니다.이 규칙은 모든 서브트리에서도 동일하게 적용됩니다.중위 순회(Inorder Traversal):BST를 중위 순회하면 항상 오름차순으로 정렬된 값을 얻을 수 있습니다.효율성:일반적으로 연산의 시간 복잡도는 O(h) (h는 트리의 ..

CS/알고리즘 2025.01.17