전체 글(210)
-
[Docker & Git Action] 이미지, 컨테이너 ~ 깃액션 사용까지 정리
1. 서론 - 도입 과정1. 도입 - Docker, 컨테이너와 이미지까지Docker의 학습 사유부터 CICD까지의 과정을 간략하게 설명하고 해당 코드들을 기록하려고 한다.초기에 프로젝트를 진행할 때 가장 걸리던 점이 서로의 개발환경이 다르다는 점이었다. 그래서 개발자가 업데이트가 된 코드 및 테스트를 진행하기 위해서는 각자 작업하는 환경에 맞는 세팅 값을 설정해줘야 했다. 또한 개발을 진행하다 보면 DB, Redis 등의 여러 가지 개발에 필요한 소프트웨어들이 존재하는데 그때에 맞춰서 해당 툴 및 데이터베이스를 깔아서 각 개발자마다 환경을 세팅해야 했다. 그렇기에 이때 생각한 것이 ‘컨테이너 개념을 배워서 적용시켜 보자’라는 것이었다.2. 중기 - DockerCompose까지이미지, 컨테이너 개념을 배우..
2024.09.29 -
[JPA]@Transactional이란
1. 서론프로젝트를 진행하고 코드를 작성할 때 DB를 사용하게 된다면 Spring Data JPA를 사용하게 된다. 그리고 이때 해당 JPA는 Java에서의 ORM의 표준으로 사용이 되며, Spring 프레임워크에서는 Spring Data JPA로 하여 사용을 하게 된다. 해당 JPA를 사용하면서 같이 등장하는 것이 바로 @Transactional 이다.해당 어노테이션은 트랜잭션 관리를 간편, 용이하게 해주는 어노테이션이다. 이를 통해 해당 백엔드 서버와 데이터베이스 간의 작업이 하나의 단위로 실행하도록 보장하는 역할이다. 그렇기에 지금까지는 이러한 논리적 하나의 단위(원자성)을 위해 항상 해당 트랜잭션을 기입해주었다.하지만 이번에 기능을 구현한 후 성능 개선을 위해 리팩토링 및 학습을 하던 도중 무분별..
2024.09.24 -
관심사 및 의존성
작성자 : @김민수작성일자 : 240821기술적 의사소통 : @김민수 @세현 임기존의 프로젝트를 리펙토링 하기 위해 각각의 서비스가 어떤 관심사에 의존성을 가지고 있는지 살펴보았다. 그리고 해당 관심사들의 서비스에서 통일되지 않는 코드를 보며 코드 가독성이 떨어진다고 생각하였다. 그리하여 먼저 어떤 서비스에서 어떤 관심사의 서비스를 의존성 주입으로 받는지 살펴보았다.Service Dependencies Service DependencieschatServicechatRepository chatroomRepositorynaverrestTemplateobjectMapper chatRoomServicechatroomRepository chatRepository userChatRoomRepository pos..
2024.08.21 -
[Spring] Category 구현하기
[Spring] Category 구현하기 쇼핑몰, 커뮤니티에 존재하는 주제를 표현할 때 자주 사용되는 것이 카테고리이다. 카테고리는 전형적인 계층형으로 서로 연관이 되는 구조이다. 해당 카테고리만을 단순히 구현해 보고 구현을 할 때 과정을 정리하려고 한다. 코드 먼저 코드들은 다음과 같다. 좀 더 구체화를 시키기 위해서는 인터페이스를 사용하고 DI를 사용하는 등의 과정을 거쳐야하는 것이 맞지만 현재의 경우 카테고리를 구현하는 것이 목표였기에 간단하게 컨트롤러, 엔티티, 서비스, 레포지토리 4개의 구성 요소만을 사용해서 진행을 하였다. 후에 다른 프로젝트를 진행할 때는 해당 부분에 대해 자세하게 세분화하고 DI를 지키는 식으로 진행을 할 예정이다. Controller package com.example.c..
2024.02.21 -
[OS] Operating System - 페이징과 스와핑
Paging Paging, 페이징은 운영체제에서 메모리를 관리하는 기법이다. 운영체제는 메모리를 관리하기 위해 메모리를 같은 크기의 블록으로 나눠서 관리를 하는데 이때 나눠진 블록이 바로 페이지이다. 페이지를 사용하면 연속 메모리 할당의 두 가지 문제점을 해결할 수 있다. 외부 단편화 문제와 연관된 요소들의 압축 문제를 해결할 수 있다. 또한 운영체제와 하드웨어 간의 협력을 통해 성능을 향상할 수 있다. 페이징에 대한 기본적인 방법은 다음과 같다. 물리 메모리의 분할 : 물리 메모리를 고정 크기의 블록으로 나눈다. 이때의 블록은 프레임(frame)이라고 한다 논리 메모리의 분할 : 프로세스의 논리 메모리고 같은 크기의 블록으로 나눈다. 해당 블록을 페이지(page)라고 한다 이를 통해 논리적 주소 공간은..
2024.02.20 -
[Docker] Docker HTTPS 적용
[Docker] Docker HTTPS 적용 [Spring] HTTPS 적용하기 (tistory.com) [Spring] HTTPS 적용하기 [Spring] HTTPS 적용하기 [HTTP] HTTPS란? (tistory.com) [HTTP] HTTPS란? [HTTP] HTTP / HTTPS란? 학습하는 웹 프로젝트에 HTTPS를 적용하기 위해 HTTPS를 먼저 알아보게 되었다. 기존 HTTP는 인터넷상에서 데이터를 주고 skyriv312079.tistory.com 이전에 local 환경에서 https를 적용시키는 것을 해봤다. 로컬에서 https로 작동하는 것을 확인했으니 이제는 해당 사항을 docker에서 사용할 수 있도록 적용하려고 한 과정을 기록하려고 한다. 과정은 다음과 같다. https 적용이 ..
2024.02.17