-
[Docker] 컨테이너 안의 파일을 다루는 세 가지 방법
이전에는 docker inspect로 컨테이너의 정보를 확인하고, 기본 네트워크에서 컨테이너끼리 통신하는 내용을 정리했다.이번에는 Nginx가 제공할 HTML 파일을 다뤘다. 컨테이너 안에서 직접 파일을 만들고, 호스트에서 복사하고, 호스트 디렉터리를 연결하는 세 가지 방식을 정리했다.실행 중인 컨테이너에서 명령 실행하기먼저 Nginx 컨테이너를 생성하고 실행한다.docker run --rm -d -p 8080:80 --name my-nginx-1 nginx옵션의미--rm컨테이너가 종료되면 자동 삭제-d백그라운드에서 실행-p 8080:80호스트의 8080번 포트를 컨테이너의 80번 포트에 연결--name my-nginx-1컨테이너 이름 지정nginx사용할 이미지이후 다음 명령을 실행한다.docker ex..
2026.11.02
-
Terraform으로 AWS 네트워크 구성하기 — 설치부터 보안 그룹까지
이번에는 Terraform을 설치하고, AWS에 VPC와 서브넷, 인터넷 게이트웨이, 라우팅 테이블, 보안 그룹을 구성했다.인프라를 코드로 관리하는 이유AWS 콘솔에서 직접 클릭해 리소스를 만들 수도 있다. 그런데 Terraform을 사용하면 원하는 인프라 구성을 코드로 남길 수 있다.내가 처음 떠올린 장점도 기록이었다. 어떻게 설정했는지 남길 수 있고, 추가·수정·삭제도 코드를 기준으로 진행할 수 있다.여기서 Terraform과 Git의 역할은 구분해야 한다.Terraform: 코드로 인프라를 정의하고 실제 AWS에 반영한다.Git: 그 코드가 어떻게 변경되었는지 이력을 관리한다.둘을 함께 사용하면 인프라 설정뿐 아니라 변경 과정도 기록할 수 있다.Terraform 프로젝트 준비하기Terraform C..
2026.11.02
-
3차 프로젝트: GameLog 회고
팀별로 프로젝트 회고를 진행했다. 이번 프로젝트에서 좋았던 점은 AI와 스킬을 적극적으로 활용해볼 수 있었다는 것이었다. 구현과 코드 정리에 도움을 받았지만, 생성된 양이 많아질수록 검토가 어려워졌다. 직접 확인한다고 하면서도 일부는 대충 넘어갔던 점이 아쉬웠다. 테스트도 돌아봤다. AI를 활용하면서 불필요한 테스트까지 많이 작성한 것 같았고, GitHub CI 실행 시간도 길어졌다. 앞으로는 테스트의 목적과 중복 여부를 확인하고, 매번 실행할 테스트와 별도로 실행할 테스트를 구분할 필요가 있다고 생각했다. Kotlin의 특징을 더 이해하고 사용했으면 좋았겠다는 아쉬움도 있었다. 호환 코드가 여전히 남아 있다는 피드백을 받으며, 전환된 코드를 읽고 판단할 수 있는 이해가 필요하다고 느꼈다. 다음에는 AI..
2026.10.30
-
3차 프로젝트: GameLog - 마무리
이날은 발표 자료를 정리하고 팀 발표를 진행했다. PPT는 작업한 코드와 팀원별 담당 기능을 바탕으로 AI를 활용해 초안을 만든 상태였다. 초안이 있어 시작하기는 편했지만, 그대로 발표에 사용하기에는 손볼 부분이 있었다. 어려운 용어가 들어간 문장도 있었고, 한 장에 글이 많아 내용을 한눈에 파악하기 힘든 부분도 있었다. 자료를 보면서 표현을 쉽게 바꾸고, 글이 많은 부분은 핵심만 남기도록 정리했다. 발표자가 말로 설명할 내용까지 슬라이드에 모두 넣으면 오히려 보기 어려웠다. 어떤 내용을 화면에 남기고 어떤 내용을 말로 전달할지 나눠야 했다. 발표자 대본도 함께 다듬었다. 슬라이드에 적힌 문장을 읽는 것과 실제로 말하는 것은 달랐다. 글로 보면 괜찮았던 표현도 소리 내어 설명하려고 하면 길거나 어색하게 ..
2026.10.29
-
3차 프로젝트: GameLog - 알림 서비스 직접 호출로 변경
이날은 알림 처리 구조를 수정했다. 좋아요나 팔로우 같은 작업과 알림 저장 사이의 트랜잭션 경계를 분리하는 작업이었다.기존에는 이벤트를 발행하고 리스너에서 알림을 저장했다. 하지만 이벤트를 사용한다고 해서 원래 작업과 알림 처리가 자동으로 분리되는 것은 아니었다. 기존 리스너는 동기적으로 실행되며 원본 트랜잭션에 참여하는 구조였다.알림 저장 중 문제가 생기면 좋아요나 팔로우까지 실패할 수 있었다. 알림은 사용자의 활동을 알려주는 기능인데, 알림을 저장하지 못했다는 이유로 원래 활동까지 취소되는 구조를 수정했다.원본 작업이 성공한 뒤 알림을 저장하도록 수정이벤트 발행과 리스너 대신 각 서비스에서 알림 서비스를 직접 호출하도록 변경했다. 호출하는 코드에서 어떤 알림을 요청하는지 확인할 수 있도록 했다.다만 ..
2026.10.29
-
3차 프로젝트: GameLog - 알림 서비스 추가
사용자 활동 알림을 추가하고, 사용자 게임 도메인의 프로필 기능을 분리했다. 팀에서는 Java 테스트의 Kotlin 전환과 기존 Kotlin 코드 정리도 함께 진행했다.하루 작업을 돌아보니 두 가지 질문이 연결되어 있었다. 새 기능이 기존 기능과 어떤 관계를 가져야 하는지, 그리고 기능이 늘어난 뒤 코드를 어떤 단위로 나누어야 하는지였다.알림은 생성 이후의 상태까지 설계좋아요나 댓글, 팔로우가 발생하면 알림을 저장하는 것만으로 끝날 것 같지만, 실제로는 결정할 조건이 많았다.내가 내 글에 좋아요를 눌렀을 때도 알림을 보낼 것인가? 좋아요를 취소하면 기존 알림은 어떻게 할 것인가? 댓글이나 사용자가 사라진 뒤에도 알림 링크를 유지할 것인가?이번에는 본인의 활동으로 생기는 알림을 제외하고, 취소된 활동에 대..
2026.10.26
-
[Docker] 도커 기초 정리 — 이미지부터 컨테이너 실행, 네트워크까지
프로젝트를 개발하다 보면 개발 환경에 따라 프로그램이 정상적으로 실행되지 않는 문제가 발생할 수 있다.예를 들어, A 프로젝트는 Java 17을 사용하고 B 프로젝트는 Java 21을 사용한다고 가정해 보자. 프로젝트마다 필요한 실행 환경이나 라이브러리 버전이 다르다면 이를 관리하는 과정에서 충돌이 발생할 수 있다.이러한 문제를 해결하기 위해 사용하는 기술 중 하나가 Docker(도커)다.이번 글에서는 Docker의 기본 개념부터 이미지와 컨테이너의 차이, 컨테이너 실행 및 관리, 환경변수와 네트워크까지 정리해 보려고 한다.1. Docker란?Docker는 애플리케이션을 컨테이너(Container)라는 독립된 환경에서 실행할 수 있도록 도와주는 플랫폼이다.일반적으로 애플리케이션을 실행하려면 운영체제에 필..
2026.10.24
-
백엔드 데브코스 12기 68일차
이 날은 GameLog 3차 프로젝트의 기획서를 작성하고, Java 백엔드를 Kotlin으로 전환했다. 먼저 AI를 활용해 운영 코드를 한 번에 전환한 뒤, 각자 맡은 기능의 코드를 직접 살펴보며 기존 동작이 유지되는지 검증했다.생각보다 AI가 코드를 잘 바꿔줘서 놀랐다. 프로젝트 전체를 전환하는 작업을 빠르게 진행할 수 있었고, 덕분에 변환된 코드의 구조와 동작을 확인하는 데 집중할 수 있었다.다만 그대로 사용하기에는 정리할 부분이 남아 있었다. 담당한 usergame 코드를 확인하면서 불필요한 ?, Java 컬렉션 사용, 수정이 필요하지 않은데도 MutableList로 선언된 부분을 직접 바꿨다. 값이 실제로 없을 수 있는지, 컬렉션을 변경할 필요가 있는지를 기준으로 타입을 정리했다.변경 후에는 관련..
2026.10.22
-
백엔드 데브코스 12기 67일차
이 날은 터미널에서 Bash 명령어를 직접 사용하며 파일과 디렉토리를 관리하는 방법을 실습했다. pwd, ls, cd로 현재 위치를 확인하고 이동했으며, 파일 생성·복사·이동·삭제 명령어도 익혔다.또한 find와 grep으로 필요한 파일과 내용을 검색하고, ps와 kill로 프로세스를 확인하고 종료하는 방법을 배웠다. 명령어를 직접 실행하고 결과를 확인하니 각각의 역할을 이해하기 쉬웠다.앞으로도 터미널을 꾸준히 활용하면서 익숙해지고, 삭제나 덮어쓰기 작업 전에는 경로와 대상을 확인하는 습관을 들여야겠다.
2026.10.21