Diary/TIL (61) 썸네일형 리스트형 2024-05-24) github action으로 CI/CD 구현 ec2 서버 배포, 8080 포트 열어두기, 내 ip에서 ssh 22, .pem key 사용해서 접속 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on UbuntuJumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.docs.docker.com공식문서를 참고하여 docker 설치 docker pull postgresdocker run -d \ --name local_pgdb \ --.. 2024-05-22) 로그인 분석 오늘은 Spring 환경에서 Spring Security의 작동 원리에 대해 제대로 이해해 보기 위해 GitHub를 참고하면서, 로그인 기능이 어떤 방식으로 구현되어 있는지, 그리고 MVC 구조에서 어떤 폴더와 파일이 존재하는지 확인해봤다. 일단 전체적인 로그인 로그아웃의 구조는 내가 봤을땐 아래와 같았다.로그인 시클라이언트가 자격 증명과 함께 로그인 요청을 보낸다.컨트롤러가 요청을 받아 DTO 객체로 변환하여 서비스로 전달한다.서비스 레이어에서 자격 증명을 검증한다.검증이 성공하면 JWT를 생성하고, 액세스 로그를 기록한다.생성된 토큰을 헤더에 포함시켜 클라이언트에게 응답한다.로그아웃 시클라이언트가 토큰과 함께 로그아웃 요청을 보낸다.컨트롤러가 요청을 받아 헤더에서 토큰을 추출하여 서비스로 전달한다.서.. 2024-05-21) 로그인, 회원가입 Entity 설계 AccessLog: 로그인 성공 시 유저 정보 저장AccessToken: 로그인 성공 시 jwtProvider.createToken(jwtProvider.createTokenPayload(email, TokenType.ACCESS) 에 의해 생성되고, 헤더에 담겨 봔환됨.RefreshToken: 로그인 성공 시 jwtProvider.createToken(jwtProvider.createTokenPayload(email, TokenType.REFRESH) 에 의해 생성되고, 헤더에 담겨 봔환됨.TokenBlackList: 로그아웃 시 기존의 토큰을 추가하여 토큰 재활용이 불가능하도록 함TockenType: ACCESS, REFRESH 를 구분하는 Enum 타입User: 이용자에 대한 내용UserRole: .. 2024-05-20) Postgresql, 로그인 Postgresql은 다음과 같이 docker-compose.yml을 생성하여 설치해주었다.version: "3.8"services: db: image: postgres container_name: local_pgdb restart: always ports: - "5432:5432" environment: POSTGRES_USER: user-name POSTGRES_PASSWORD: strong-password volumes: - local_pgdata:/var/lib/postgresql/data pgadmin: image: dpage/pgadmin4 container_name: pgadmin4_container re.. 2024-05-19) CI/CD with github action에 대한 고찰 다음과 같은 방식으로 구현됐는데, 러닝커브가 부족했던 것 같다. 하지만 이거에 대한 전략을 따로 생각했었어야 했을 것 같다.(git convcention과 같은 형식으로다가)개인적인 생각으로는CI 과정:코드가 dev 브랜치에 푸시되거나 풀 리퀘스트가 생성될 때 실행된다.빌드, 테스트, 정적 분석을 통해 코드 검증을 수행한다.테스트 리포트와 코드 커버리지 리포트를 생성하여 업로드한다.CD 과정:풀 리퀘스트가 dev 브랜치에 병합될 때 실행된다.최종 빌드 및 배포 작업을 수행한다.이렇게 분류해서 yml을 작성하는것도 괜찮았을 것 같은데 시간이 좀더 널널했으면 개선을 해보지 않았을까? 생각이 들었다.name: Java CI with Gradleon: push: branches: [ "dev" ] pu.. 2024-05-16) MYSQL-MSSQL 비교 1. 라이선스MSSQL: 상용 소프트웨어로, 라이선스 비용이 필요합니다. 그러나 Microsoft는 제한된 기능을 가진 무료 버전(SQL Server Express)도 제공합니다.MySQL: 오픈 소스 소프트웨어로, 무료로 사용할 수 있습니다. 그러나 상업적 용도로는 Oracle의 상용 라이선스가 필요할 수 있습니다.2. 플랫폼 지원MSSQL: 주로 Windows에서 사용되지만, 최근에는 Linux와 Docker에서도 지원합니다.MySQL: 다양한 운영 체제(Windows, Linux, macOS 등)를 지원합니다.3. 성능 및 확장성MSSQL: 대규모 기업 환경에서 높은 성능과 확장성을 제공하며, 복잡한 트랜잭션 처리에 강점이 있습니다.MySQL: 가벼운 애플리케이션부터 대규모 웹 애플리케이션까지 다양.. 2024-05-14) 프로젝트 복기 N+1 문제는 데이터베이스 쿼리 성능을 저하시킬 수 있는 일반적인 문제로, 이를 해결하기 위해 여러 가지 방법이 존재한다.Fetch JoinFetch Join은 연관된 엔티티를 한 번의 쿼리로 가져와서 N+1 쿼리를 한 번의 쿼리로 줄여주는 방법이다.@Entitypublic class Author { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "author", fetch = FetchType.LAZY) private List books;}@Entitypublic class Book { @Id @Gen.. 2024-05-12) 동시성 이슈, 락에 대한 고찰 우리 프로젝트는 시간관계상 비관적 락을 통해서 구현을 시작했었고, 비관적 락을 사용하기에, 로드 밸런싱을 사용했을때 서버에 가해지는 부하는 분산됐지만, 처리 총량은 변하지 않았다.대용량 트래픽을 처리해야 하는 환경에서는 비관적 락과 낙관적 락 모두 한계가 있을 수 있다. 대규모 트래픽과 데이터 처리에서는 두 가지 락 기법 모두 성능 저하나 확장성 문제를 초래할 수 있기 때문이다.비관적 락의 한계성능 저하많은 트랜잭션이 동시에 락을 획득하려고 하면 경합이 발생해 성능이 저하될 수 있다.확장성 문제락 관리의 복잡성이 증가하면서 시스템 확장성에 한계가 생긴다.데드락 발생 가능성여러 트랜잭션이 동시에 여러 자원을 락하려고 하면 데드락 가능성이 높아진다.낙관적 락의 한계높은 충돌 발생 가능성트랜잭션 수가 많아지면.. 이전 1 2 3 4 5 6 ··· 8 다음