전체 글
Nginx 적용기
SSL/TLSSSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)는 통신 세션의 데이터를 암호화하여 인터넷을 통한 통신이 보안되게 하는 프로토콜SSL데이터 등의 전송되는 정보를 보거나 훔치는 것을 방지SSL은 사용되지 않음 TLS 사용웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술TLSSSL이 일반적인 용어이기 때문에 DigiCert는 보안 인증서를 여전히 SSL로 언급하지만 DigiCert에서 SSL을 구입하면 가장 신뢰할 수 있는 최신 TLS 인증서를 얻을 수 있음SSL의 향상된 버전Nginx란트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 웹 서버 프로그램..
Git Submodule 적용기
배경2차 팀 프로젝트를 하면서 외부에 노출되면 안되는 값(DB 주소, 비밀번호, JWT 생성 키 등)들을 관리하기 위해서 Github Environment secrets, Dock .env 파일, Git Submodule 중에서 선택을 하게 되었다선택을 하게 된 이유로는 아무래도 추가적인 Github Repository에서 관리할 수 있고 Versioning도 되고 여러 파일로 나눠 특징 별로 application-jwt.yml application-db.yml와 같이 파일을 나눠 관리 및 추가와 수정 삭제등이 용이하다는 장점들 때문이다 Submodule 이란쉽게 말하자면 Git 저장소 안에 Git 저장소를 만들어 넣는 것이다 당연히 .git 폴더가 각각 생기고 개별적으로 Version, Commit 관..
Lock
Lock 이란?고립성(Isolation)을 보장하기 위한 방법데이터 항목에 상호 배타적으로 접근이 되도록 하는 것Lock을 사용함으로 해당 Lock을 가지고 있는 Transaction(사용자, 요청)만이 해당 데이터에 접근을 할 수 있다Lock 과 Transaction그러면 Lock과 Transaction의 차이는 무엇이 있는지 알아보면Transaction은 논리적 작업 단위를 이루는 연산들의 집합(All or Nothing - Atomicity 보장) 이고Lock은 Transaction이 동일한 데이터 갱신 작업을 할 수 없도록 하도록 구현한 방법 중 하나이다단순히 SELECT * FROM MEMBER; 와 같이 조회 만 하는 경우에는 일반적으로 데이터베이스 시스템은 Lock을 걸지 않는다또한 UPDA..
[실습] CICD-4
Trouble Shooting문제점 1Github Action을 통한 S3 bucket에 application zip file uploadUnable to locate credentialsAWS CLI 사용 시 권한이 없어서 생기는 문제S3에 접근 가능한 IAM USER 생성 후 Access key 할당github repository -> settings -> secrets and variables -> Action 탭에 할당받은 access key & secret key 추가S3 전송 전에 해당 step 추가 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v3 with: aws-access..
실습CICD-3
기본 설명흐름사용자가 Repository로 코드를 push해당 code build 후 zip파일로 압축 후 S3업로드업로드한 파일을 codeDeploy를 통해 EC2에 배포 후 jar 파일 실행CodeDeploy란Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수, Amazon ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스배포 유형실행 중 배포(현재 위치 배포) - 운영 중인 Instance내에 App 중지 후 최신 App 설치 후 시작블루/그린 배포주요 구성 요소APPComputing Platform(EC2, ECS, Lambda)배포 구성, 그룹(개별 Instance 집합), 유형IAM Instance Profile: EC2 Instace에 연결하는 IAM 역할..
[실습] CICD - 2
CI workFlow 작성시나리오main branch에서 개발용 dev branch를 만들고 각 기능을 개발 할 feat branch 생성개발 완료 후 feat -> dev로 pull request를 통해 코드 리뷰와 merge 과정 진행name: Gradle Teston: pull_request: branches: [ "dev" ]permissions: contents: read# 실행 시킬 내용들의 집합체jobs: build: # runner : ubuntu 지정 runs-on: ubuntu-latest # 순차 실행 steps: - uses: actions/checkout@v3 - name: Set up JDK 17 uses: actio..
[이론] CI/CD - 1
CI/CD 간단 지식CI란CI(Continuos Integration) 지속적 통합자동화된 빌드 및 테스트가 수행된 후 개발자에 의해 변경된 코드를 Repository로 Merge를 진행하는 개발 방식핵심 목표 : 버그를 신속하게 찾아 해결 & 품질 개선 & 업데이트 검증 & release 시간 단축CD란CD(Continuous Deployment) 지속적 배포or CD(Continuos Delivery) 지속적 제공 (상호 교환하여 사용)CD(Continuos Delivery)애플리케이션에 적용한 변경 사항을 버그 테스트를 거쳐 Repository에 자동으로 업로드되는 것CD(Continuous Deployment)변경 사항을 Repository에서 프로덕션 환경(Cloud환경, On-Premises)..
[Infra] CICD
VPC 및 Subnet 설정 EC2, RDS, S3 생성 Github Action 설정 최종 Infra 구성 1차 진행 구조 우선은 VPC와 Subnet Routing Table, 외부 접속을 위한 Internet Gateway 까지의 설정을 할 것이다 VPC & Subnet Internet Gateway 2번에서 만들어 두었던 ImageUploaderVPC 와 방금 만든 Internet Gateway 를 연결해 준다 Routing Table 기존에 만들어 두었던 VPC를 확인해보면 기본적으로 만들어진 Routing table이 존재한다 해당 Routing table의 설정을 편집해서 Public Subnet을 연결을 할 것이다 연결 대상을 0.0.0.0/0 (모든 접근)에서 IGW(앞서 3번에서 만들어..
첫 팀 프로젝트 후기
3월 9일부터 시작한 팀프로젝트가 드디어 마무리가 되었다 원래는 6주정도로 생각중이었지만 프론트 한 분 잠수, 기타 이유로 1주일 정도 밀리기는 했지만 그래도 첫 팀프로젝트가 완성이 되어서 만족이지만 몇가지 아쉬운 부분들이 남아있다 팀 프로젝트 후기 "개인이 아닌 함께 하는 것의 즐거움" 항상 개발 공부는 혼자 진행해왔고 누군가의 피드백 또한 받아본 적이 없다 몇번 친구들과 스터디를 진행을 해봤지만 항상 알려주는 역할을 해왔기에 소통이 오간다기 보단 일방적인 정보 전달에만 국한되어왔다 하지만 이번 팀 프로젝트를 하면서 기술적인 문제들, 서로 고민하던 내용들, 부족한 부분을 채워나가면서 즐거움이 생기게 되었다 협업과 소통의 즐거움을 배울 수 있던 시간이었다 "부딪칠 수 있는 자신감" 부끄러운 얘기지만 나는..
Spring Security - 동적 권한 처리
스프링 시큐리티를 사용하는 프로젝트를 진행하는 도중 동적으로 권한을 처리해야하는 경우가 생겼다 기존에 공부할때는 특정 접근 경로에 대해서 어떠한 권한(혹은 역할)이 있는지를 판단하는 것이 전부였고 간단한 상황에서만 사용이 가능했다 문제 상황 게시글을 작성한 사용자, 해당 게시글에 접근이 허락된 사용자들에 대해서 권한 처리 문제 게시글을 작성한 사용자에 대해서 기존 방식대로 권한을 주게 되면 ROLE_WRITER와 같이 주면 된다 requestMatchers("/post/**").hasRole("WRITER") 하지만 이 방식대로 권한을 주게되면 한가지 문제점이 있다 1번 글 작성자가 2번 글에 대해서 권한을 가질 수 있게 된다는 점이다 예를들어 1번글 작성자가 /post/1/update 경로로 접속을 하..