Tech Blog of Pinomaker
[Database] Transaction
Database/Database 2023. 10. 9. 19:39

1. Transaction이란? 트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위로 한꺼번에 수행되어야할 일련의 연산을 의미한다. 트랜잭션은 작업의 안전성을 보장해주기에 논리적인 작업을 모두 처리하거나 혹은 처리하지 못 하는 경우에는 원상태로 복구해주는 기능을 제공하며, 사용자의 입장에서는 논리적 단위로 이해할 수 있고 시스템은 데이터를 접근하거나 변경하는 단위가 된다. 트랜잭션의 예시를 들어보자. A가 B에게 50,000원이라는 금액을 송금하는 Flow를 생각하면, A 통장에서는 50,000원이 빠져나가고, B 통장에서는 50,000원이 추가되어야한다. 하지만 작업 중에 A 통장에서 돈은 빠져나갔지만 B 통장에 50,000원을 추가하는 쿼리에서 에러가 발생하면 ..

article thumbnail
Nestjs Swagger(1) - Swagger 설정
B.E/Nest JS 2023. 10. 9. 01:14

API Documentation & Design Tools for Teams | Swagger Loved by all • Big & Small Thousands of teams worldwide trust Swagger to deliver better products, faster. swagger.io Swagger는 API를 쉽게 문서화를 시킬 수 있는 라이브러리 입니다. Swagger를 사용하면 코드레벨에서 API 문서를 작성하고 동기화할 수 있어 어렵지 않게 API를 실시간으로 관리할 수 있다는 장점이 있으며, API를 사용해야하는 유저들은 Swagger에서 테스트를 할 수 있다는 장점이 있습니다. 오늘은 Nestjs에서 Swagger를 사용하는 방법에 대해 알아봅니다. 0. 의존성 모듈 설치 먼저..

Docker를 이용하여 MySQL Write(master), Read(slave)로 Replication 구현하기.
Database/MySQL 2023. 10. 9. 00:49

Replication이란? Replication이란 말 그대로 실시간으로 복제본 데이터 베이스 서버를 운영하는 것으로, 원본 서버를 마스터 서버, 이를 복사하여 사용하는 서버를 슬레이브 서버라고 칭한다. 서버에서 DB가 변하는 요청인 INSERT, UPDATE, DELETE 등은 마스터 서버로 요청을 보내고, SELECT와 같은 조회는 슬레이브 서버로 요청을 보내서 사용하는 것이 일반적이며, 마스터 서버는 받은 요청을 똑같이 슬레이브 서버로 실시간으로 보내 동일한 상태를 유지한다. Replication을 사용하는 이유는 디비 서버를 분리하여 디비 서버에 대한 부하를 줄이기 위함과 데이터의 안정성에 있다. 오늘은 Docker를 이용하여 Replication Mysql를 구성해보자. 0. 프로젝트 구성 ├─..

article thumbnail
MSW로 Mocking(1) - Brower
F.E/React 2023. 9. 23. 11:11

이번 글은 MSW를 이용하여 백엔드 API를 Mocking 하는 방법에 대해 알아보자. 실제로 프로젝트에 들어가게된다면 내가 프론트 엔드 작업을 할 때 API가 있을 수도 있지만, 없는 경우도 많다. 보통 프로젝트를 할 때는 프론트엔드에서 UI를 구성하는 작업과 백엔드의 API를 개발하는 작업이 작업 순서상 동시에 진행되는 데 이러면 UI를 구성할 때 백엔드로부터 데이터를 받아올 수 없기 때문에 Fake 데이터인 더미 데이터를 만들어서 사용한다. 그렇게 만들어둔 더미 데이터는 API가 완성된다면 사용하지 않고 백엔드로부터 데이터를 받아오지만 단순하게 가짜 데이터인 더미 데이터를 사용하는 것이 아니라 실제로 호출할 수 있는 가짜 API를 사용하면 좀 더 안정적으로 UI를 구성할 수 있다. Mock Serv..

article thumbnail
[Git] Git 사용법 - Git, Commit, Push, Repository
CS/Git 2023. 5. 31. 00:58

1. Git이란? 개발자라면 Git을 모를 수가 없을 것이다. 사이드 프로젝트에서든 실무에서든 개발 프로젝트에서는 Git 없이는 개발과 협업이 거의 불가능할 정도로 개발자에게는 필수적인 Tool이다. Git은 형상 관리 도구(버전 관리 시스템) 중 하나로 소프트웨어를 개발하는 집단에서 코드를 효과적으로 관리할 수 있게 도와주는 무료이자 공개 소프트웨어다. 한 마디로 Git은 여러명의 개발자가 하나의 소프트웨어를 개발할 때 소스코드를 관리를 하기 위해서 사용한다고 생각하면 된다. (1) Git의 필요성 위에 언급한 것과 같이 Git은 여러명의 개발자가 하나의 소프트웨어를 개발 할 때 소스코드 관리를 위해서 사용한다고 하는 데 그렇다면 어떤 점의 이유 때문에 Git과 같은 버전 관리 시스템을 사용해야할까? ..

Java의 예외 계층
Language/JAVA 2023. 4. 23. 13:49

김영한님 스프링 DB 접근 1편 - 예외처리부분을 보고 정리한 내용입니다. Exception, 예외란? 예외는 크게 두 종류로 나뉘게 된다. Checked Exception와 Unchecked Exception 그리고 예외에 해당되지 않은 Error가 있다. 예외란 개발자가 로직을 잘못 짰거나 혹은 사용자가 잘못된 값을 넘겨 정상적인 프로그램 흐름에서 벗어나는 행위를 말한다. 보통의 개발자는 예외가 나올 수 있는 상황을 미리 예측하여 예외처리를 한다.. 오류는 하드웨어에서 문제가 발생하는 경우도 있고, 완전 잘못된 로직을 짠 경우 등 시스템 레벨에서 발생하는 비정상적인 행위이기에 미리 예측해서 막을 필요가 없다. 예외도 하나의 객체이며, 모든 최상위 부모는 'object'이기에 예외의 최상위 부모도 Ob..

Serverless에 대해서 알아보자!
DevOps/Server 2023. 4. 21. 00:27

1. Serverless란? Serverless, 최근에 개발자로 일을 하면서 많이 들어본 단어다. 이 개념에 대해서 뭔 지는 알겠으나 남이 나에게 Serverless가 뭐야?? 라고 물어봤을 때 명확한 답을 할 정도로는 알지 못 하던 중. SWYG에서 진행하는 Serverless 스터디를 참여하게 되어 공부를 하게 되었다. Serverless는 단순하게 직역하자면, "서버가 없다"라는 뜻이다. 그렇다면 이것은 우리가 개발하는 서버가 없다는 뜻일까?? 그것은 아니다. 서버를 관리를 할 필요가 없다고 해서 Serverless라고 불리는 것이다. 서버 개발자가 하는 일은 단순하게 Spring boot 혹은 Node.js 등을 이용하여 API를 만드는 것이 아니다. Client에게 필요한 API를 제공함과 동..

[AWS] DNS와 Route53
DevOps/AWS 2023. 3. 11. 17:42

DNS란? DNS(Domain name system)는 네트워크를 이용한 통신을 수행할 때 중요한 요소 중 하나가 바로 대상을 지정하는 주소이다. 해당 주소를 통하여 목적지 대상을 지정할 수 있고, 출발지 대상을 알릴 수도 있다. 네트워크 상에는 다양한 주소 체계가 있지만 보통은 IP 주소 체계를 이용한다. 예를 들어보자. 내가 웹 사이트를 개발하여 운영 서버에 배포를 하였을 때 타 사용자들은 어떻게 내가 개발한 웹 사이트에 방문을 할 수가 있을까?? 바로 나의 웹 사이트 주소를 통하여 방문을 할 수가 있는 데 웹 사이트 주소를 IP 주소인 216.3.128.12와 같이 알려주면 사용자가 방문하기에 불편함을 겪을 수 있는 데 이를 해소하기 위한 것이 바로 DNS다. DNS를 이용하면 www.naver.c..

[Spring] Spring을 이용한 Todo Crud 구현하기(2) - Jpa 셋팅 및 DB 연결
B.E/Spring 2023. 2. 13. 00:42

아래의 게시글을 확인하고 본 글을 읽기 바랍니다. [Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅 해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위 pinomaker.com 이번 게시글에서는 JPA와 MySQL를 셋팅해보자 runtimeOnly 'com.mysql:mysql-connector-j' // MySQL Driver implementation 'org.springframework.boot:spring-boo..

[Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅
B.E/Spring 2023. 2. 11. 00:05

해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위의 사이트에 들어가면 Spring boot 프로젝트를 생성하기 위한 사이트가 나오는 데, 아래의 설정에 맞추어서 셋팅하거나 본인이 하고 싶은 것이 있으면 수정을 한 후에 GENERATE 버튼을 클릭하면 압축 폴더가 다운로드 받아지며, 해당 폴더를 인텔리제이로 열어주자 Project(Package 모듈) : Gradle Language : Java Spring boot Version : 2.7.8 (SNAPSHOT이 붙은..