전체 글 43

파이썬 기초 강의

회사 입사 전 파이썬을 빠르게 복습하는 중이다.자바랑 다르거나, 몰랐던 내용만 간단하게 정리하려고 한다. 2장 자료형Dictionary에서 직접 접근과 get 접근의 차이점dic에 원하는 데이터가 없을 경우dic = {'name':'pey', 'phone':'010-1234-1234', 'birth':'1118'}dic['name'] -> Key Error, 에러가 난다.dic.get('name') -> None 출력 Str에서 쓸 수 있는 index와 find의 차이점Str에 원하는 데이터가 없을 경우s = "hello world"s.index("x") -> ValueError, 에러가 난다.s.find("x") -> -1 출력 집합 자료형- 중복을 허용하지 않는다.- 순서가 없다. - & (교집합) ..

Data Analyst/Python 2025.09.14

스프링부트와 JPA 활용 2

섹션 2,3 - API 개발 기본, 준비- API Controller에 엔티티를 직접 노출시키면 안되는 이유문제1) 엔티티의 내용이 변경되면 Controller가 작동하지 않을 수 있음. 즉, 1:1로 만들어놓은 스펙 자체가 바뀌는 게 문제임.문제2) 엔티티를 그대로 받으면, 개발자는 문서를 까보지 않으면 엔티티 필드 중 어떤 필드를 받아오는 작업인지 모름.=> 그래서 반드시 별도의 Dto를 만들어야 함 (장애방지, 여러 종류의 Request를 위해 구분하는 용도)+) 마찬가지로 반환할 때도 별도의 Dto를 만드는게 엔티티를 직접 노출시키지 않아도 되고 유지보수 하기 좋음 - 강사님의 Update 시 return 철학@Transactionalpublic void update(Long id, String ..

Backend/JPA 2025.07.28

SSH 터널링과 인텔리제이에 적용하는 법

SSH 터널링이란?로컬에서 서버 내부의 포트를 마치 내 컴퓨터의 포트처럼 사용할 수 있게 해주는 보안 연결즉, 로컬에서는 MySQL 3306 포트가 열려있지 않지만 SSH 터널을 통해 내 컴퓨터의 localhost:3306 처럼 간접 접속할 수 있게된다. 학교 서버는 SSH 터널을 통해 접속해야 하므로 터미널에서 수동 SSH 포워딩을 열어준다. 다만 3306으로 설정하니 로컬의 데이터베이스를 먼저 인식해서 33306으로 변경해주었다.ssh -L 33306:localhost:3306 {서버 사용자 이름}@{호스트} -p {포트} SSH 포워딩이 터미널에서 열려있는 동안 인텔리제이에서는 localhost와 33306으로 연결하면 된다.

Java to Kotlin 비교 및 정리

Lec 01. 코틀린에서 변수를 다루는 방법- 모든 변수는 var / val 을 붙인다. var = 변경 가능, val = 변경 불가능 (read-only)- 프린트할 때 기본으로 println을 사용한다.- 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.- Primitive Type과 Reference Type을 구분하지 않아도 된다. => 프로그래머가 boxing / unboxing을 고려하지 않아도 되도록 Kotlin이 알아서 처리 해준다.- Null 이 들어갈 수 있는 변수는 타입 뒤에 ? 를 붙여주어야 한다. => 아예 다른 타입으로 간주된다.- 객체를 인스턴스화 할 때 new를 붙이지 않아야 한다.Lec 02. 코틀린에서 null을 다루는 방법코틀린에서는 인자에 null이 허용됨을 명시해..

Backend/Kotlin 2025.03.23

Kubernetes 기반 CI/CD 구성, 배포

기본 개념 정리- CI 가 실행되는 때: PR Open, Synchronize(추가적인 변경사항이 기존 PR에 추가될 때)- CD 가 실행되는 때: PR Merge (코드 변경사항이 메인 코드 베이스로 통합되는 순간) Docker- 컨테이너 기술을 사용해서 애플리케이션과 그 환경을 이미지라는 형태로 패키징하는 플랫폼- 어떤 환경에서든 동일한 실행 보장 Kubernetes- 컨테이너화된 애플리케이션 배포, 확장, 관리, 운영 플랫폼 Helm- Kubernetes 패키지 매니저 (애플리케이션 설정, 배포 관리 간편화) AWS- 아마존이 제공하는 클라우드 서비스- 손쉽게 인프라 구축, 확장 및 실행 가능 AWS ECR(Elastic Container Registry)- Docker 이미지를 쉽게 저장, 관리,..

인프라/CI CD 2025.03.12

Kafka TIL

Kafka란분산 스트리밍 플랫폼이다. 주로 실시간 데이터 피드의 빅데이터 처리를 목적으로 사용된다.대용량 데이터 스트림을 저장하고 실시간으로 분석하거나 처리하는 데 중점을 둔다.Kafka의 기본 구성 요소메시지 (Message)- Kafka를 통해 전달되는 데이터 단위이다. ex) 로그 데이터, 이벤트 데이터- 메시지는 키, 값, 타임스탬프, 그리고 몇 가지 메타 데이터로 구성된다.  프로듀서 (Producer)- 메시지를 생성하고 Kafka에 보내는 역할을 한다.- 프로듀서는 특정 토픽에 메시지를 보낸다. 토픽 (Topic)- 메시지를 저장하는 장소이다. 메시지는 토픽에 저장되었다가 소비자에게 전달된다.- 토픽은 여러 파티션으로 나누어질 수 있으며, 파티션은 메시지를 순서대로 저장한다. 파티션 (Par..

Backend/MSA 2025.01.01

RabbitMQ TIL

RabbitMQ란메시지 브로커이다. 데이터를 송신자로부터 수신자에게 전달하는 중단 매개체 역할을 한다. - 비동기 처리 : 데이터를 비동기적으로 처리하여 시스템의 응답성을 높인다.- 부하 분산 : 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산한다.- 내결함성 : 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지한다. RabbitMQ의 기본 구성 요소RabbitMQ는 AMQP 프로토콜을 사용한다.  메시지 (Message)RabbitMQ를 통해 전달되는 데이터 단위이다. ex) 사용자 등록 정보, 주문 내역 프로듀서 (Producer)메시지를 생성하고 RabbitMQ에 보내는 역할을 한다.ex) 웹 애플리케이션이 사용자 등록 정보를 RabbitMQ에 보내는 경우 큐 (Que..

Backend/MSA 2025.01.01

대규모 시스템 학습 전 개념 정리 TIL

동시 접속자와 초당 요청량(TPS)대규모 시스템을 설계할 때 얼마나 많은 사용자가 시스템을 사용할 것인지 파악하는 것이 중요하다.가장 중요한 것은 동시 접속자의 요청 수이다. TPS(Transactions Per Second)초당 처리되는 트랜잭션의 수를 나타내는 지표이다. 시스템이 얼마나 많은 요청을 동시에 처리할 수 있는지를 나타내며, 시스템의 처리 능력을 가늠할 수 있게 해 준다. 시스템이 TPS을 견딜 수 있도록 설계해야 한다!            그리고 예상치 못한 이벤트로 인해 시스템이 TPS를 견디지 못해 중단되었을 경우의 상황도 대비해야 한다.1. 애플리케이션의 수를 늘린다.2. 오류 상황에서 사용자가 대기할 수 있도록 대기열을 설정한다.3. 자동 스케일링을 통해 시스템의 자원을 동적으로 ..

Backend/MSA 2024.12.30

241224 DB Lock 개념과 실습 TIL

DB LockDB Lock(Database Lock)은 데이터베이스에서 여러 트랜잭션이 동시에 같은 데이터에 접근할 때, 데이터의 무결성(일관성)을 보장하기 위해 사용되는 메커니즘이다.즉, 한 트랜잭션에 특정 데이터에 대해 작업을 하고 있을 때 다른 트랜잭션이 그 데이터에 접근하지 못하도록 잠그는 것이다.이렇게 데이터의 일관성을 유지할 수 있고, 동시 발생 충돌을 방지할 수 있다. 만약 DB Lock을 사용하지 않으면 어떤 문제가 발생할 수 있을까? 1) Dirty Read(더티 리드) 한 트랜잭션이 데이터를 수정 중일 때 다른 트랜잭션이 그 데이터를 읽는 상황이다.만약 첫 번째 트랜잭션이 롤백된다면, 두 번째 트랜잭션은 잘못된 데이터를 읽은 것이 된다. 2) Non-repeatable Read(반복 불..

241223 장애 예방조치 개념 TIL

장애 예방 전략1) 클러스터링 (Clustering)클러스터링이란 여러 서버를 하나의 시스템처럼 구성하여, 고가용성과 로드 밸런싱을 제공하는 방법이다.클러스터 내의 각 서버는 동일한 데이터를 공유하고, 하나의 서버에 장애가 발생하면 다른 서버가 그 역할을 자동으로 수행한다.+) 고가용성 : 시스템이 지속적으로 가동 가능한 상태를 유지하는 능력 2) 로드 밸런싱 (Load Balancing)로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 기술이다. 이를 통해 각 서버의 부담을 줄인다. 3) 지오 리던던시 (Geo-Redundancy)지오 리던던시는 데이터를 지리적으로 떨어진 여러 장소에 저장하여 한 지역에서 장애가 발생해도, 다른 지역에서 서비스를 지속할 수 있도록 하는 방법이다. 4) 성능 및 용..