[Spring Boot] 동시성 제어
·
Daily
프로젝트를 진행함에 있어 동시성 문제는 항상 해결해야 되는 부분이라고 생각합니다.이번에 동시성 제어에 대해서 알아보려고 합니다. 동시성 제어에 들어가기 앞서 일단 스레드와 멀티스레드 개념부터 잡고 들어가 보겠습니다.스레드 & 멀티스레드 스레드란?- 프로세스의 실행 가능한 가장 작은 단위입니다. 멀티 스레드란?- 한 프로세스 내에서 여러 스레드를 동시에 실행하는 것입니다. 멀티스레딩은 결국 멀티 스레드 환경을 구현하고, 관리하는 기법 또는 개념으로서 프로세스 내 작업을 여러 개의 스레드, 멀티 스레드로 처리하는 기법입니다. 트랜잭션트랜잭션은 DBMS에서 데이터를 다루는 논리적인 작업의 단위를 의미합니다. 쉽게 말해, 여러 개의 데이터베이스 작업을 하나의 단일 작업처럼 처리하는 것을 말합니다. 여기서 중요한..
Spring Boot - 이메일(SMTP)비동기 전송
·
Daily
프로젝트를 진행하다 보면 이메일 인증 기능을 자주 사용하곤 합니다.그 과정에서 항상 들었던 의문점 중 하나는, 왜 이메일이 생각보다 늦게 올까?라는 생각이었습니다. 저는 이메일을 일괄 전송하는 기능을 구현해야 하다보니, 속도 부분을 개선해야 하는 점은 해결해야 하는 과제 중 하나였습니다. 이전에 다뤘던 SMTP를 더해서, 이번에는 이메일을 비동기로 전송해보는 부분에 대해서 다뤄보려고 합니다. SMTP 구축에 대해서 궁금하신 분들은 아래 포스팅을 참고하시기 바랍니다.https://hyunily.tistory.com/22 Spring Boot 회원가입 - 이메일(SMTP) 인증 구현하기많은 서비스에서 회원가입 과정에 이제는 당연하다고 여겨지는 이메일 인증 기능을 구현해보려고 합니다. 구현에 앞서 프로젝트에 ..
VMware Ubuntu가상환경 Jenkins 설치
·
Daily
Jenkins란?오픈 소스 자동화 서버로, 주로 소프트웨어 개발과 관련된 작업의 자동화를 지원하는 도구입니다.그리고 CI/CD 파이프라인을 설정하고 관리하는 데 많이 사용됩니다. Jenkins의 주요 사용 목적중 하나는 개발자가 코드를 변경할 때마다 자동으로 빌드, 테스트, 배포를 실행하여 개발 주기를 가속화하고 품질을 높이는 것입니다.Jenkins 주요 기능과 구성 요소1. 자동화된 빌드와 테스트코드가 레포지토리에 커밋될 때마다 자동으로 빌드를 수행하고, 테스트를 실행하여 코드가 정상적으로 작동하는지 확인합니다. 2. 플러그인 시스템플러그인 기반 아키텍처를 채택하고 있어, 다양한 플러그인을 통해 기능을 확장할 수 있습니다. 가령 Git과 같은 버전 관리 시스템, Gradle과 같은 빌드 도구 지원, D..
git pull error
·
Daily
사람들과 협업하며, 프로젝트를 진행하다 보면 다음과 같은 에러를 자주 마주하곤 합니다. 저는 주로 개발 작업이 좀 오래 걸렸을때, 혹은 변경사항에 있어 커밋을 몇번 하고 나서  push를 진행했을때 저런 에러를 마주하곤 했었습니다.  한두번 마주한게 아닌, 종종 모습을 나타내는 이자식... 그래서 어떤 에러인지? 해결방법은 무슨 차이가 있는지? 자세히 에러에 대해서 알아보고, git에서 제시하는 3가지 방법 중 필요한 방법을 선택해서 진행하려고 합니다.  발생 원인해당 에러가 발생하는 이유는 다음과 같습니다. 1. Pull 방식을 명시적으로 정하지 않음2. 그로 인한 분기 차이가 발생3. 로컬 브랜치와 remote 원격 브랜치 사이에 변경 사항 충돌이 발생 발생 원인 예시   가령 로컬 브랜치에서 커밋 ..
Mac M1 VMware + Ubuntu 설치
·
Daily
이번에는 M1환경에서 VMware를 활용해서 Ubuntu를 설치하는 과정에 대해서 다뤄보려고 합니다. 진행하기에 앞서, 일단 VMware를 설치해 주시길 바랍니다..!https://www.techspot.com/downloads/downloadnow/2755/?evp=b9879fcc0383c08cef26189e2277a4ec&file=11022#google_vignette VMware Fusion for macOSVMware Fusion delivers the best way to run Windows, Linux and more on Apple Macs without rebooting.www.techspot.com운영체제 파일 준비보통 운영체제를 설치할 때 가장 최신버전은 피해서 설치하시는 걸 권장드립..
Github Actions로 배포 자동화
·
Daily
프로젝트를 관리하다 보면 유지보수 과정에서 배포를 자동화하고 싶다는 생각을 한 번씩 하곤 했었습니다. 그러다가 마주하게된 Github에서 제공하는 Actions기능을 활용하면 버전관리를 자동화시킬 수 있다는 소식을 접했고, 오늘은 이를 활용한 자동 배포에 대해서 다뤄보려고 합니다. 정확히 다뤄볼 내용은, 백엔드 프로젝트를 배포하는 파이프라인에서 마지막에 백엔드 서버를 실행하고, 만약 서버가 실행 중이면 재부팅할 수 있게 프로그램을 짜볼 예정입니다!! 저는 AWS EC2에 배포를 하겠습니다!준비 환경일단 배포하기에 앞서, 간단한 Spring Boot 프로젝트와, EC2를 준비해 주시면 감사하겠습니다!!EC2를 생성한 후, SSH 접속까지 한 상태로 진행해주시면 됩니다.Spring Boot 프로젝트 jar파..
VMware 포트포워딩 - 외부접속(2)
·
Daily
지난 포트포워딩은 로컬환경에서 가상환경으로 DB 서버를 구축하고, 활용하는 글을 포스팅했었습니다. 이번 포스팅은 로컬환경에 국한되지 않고, 정말 다른 인터넷 환경에서 접속할 수 있는 포트포워딩 추가 설정에 대해서 다뤄보려고 합니다. 포트포워딩을 다루기 전, 준비해야 할 환경은 로컬환경에서 포트포워딩이 완료된 VMware가 필요합니다.해당 준비는 아래 포스팅을 참고하여 준비해 주시면 됩니다....!!!https://hyunily.tistory.com/20 VMware 포트포워딩 - 외부접속(1)많은 사람들이 활용하고 있는 가상환경중 VMware도 적지않게 많이 사용하고 있습니다. 하지만 사용자들 중에서 "나는 VMware로 DB서버를 구축하고, 외부에서 접속해서 쓰고싶은데?" 라는 생각을 해hyunily...
VMware 포트포워딩 - 외부접속(1)
·
Daily
많은 사람들이 활용하고 있는 가상환경중 VMware도 적지않게 많이 사용하고 있습니다. 하지만 사용자들 중에서 "나는 VMware로 DB서버를 구축하고, 외부에서 접속해서 쓰고싶은데?" 라는 생각을 해보신 분들이 계실거라고 생각합니다. 저도 가상환경을 사용하면서 이와같은 생각을 해본적이 있는데요...!! 그래서 오늘은 포트포워딩을 통한 가상환경 외부접속에 대해서 다뤄보려고 합니다.포트포워딩이란?포트포워딩(Port Forwarding)은 네트워크 트래픽을 특정 포트에서 다른 포트로 전달하는 네트워크 설정 기술입니다.이 과정은 라우터 또는 방화벽에서 설정되며, 주로 외부 네트워크에서 내부 네트워크로의 트래픽을 관리하고 제어하기 위해 사용됩니다. 그럼 이를 간단하게 접근해보자면 모두가 알고있는 공유기를 활용하..