분류 전체보기

로컬에서 Spring Boot 빌드하고 docker image 만들어서 docker hub에 올리고..EC2 들어가서 docker hub에 있는 이미지 pull 받아서 run 시키기... 개발을 하면 할수록 CI/CD의 중요성이 깊게 느껴지는 것 같다... 배포에 있어서 나와 같이 귀찮음 혹은 어려움을 느끼고 있는 다른 분들을 위해 기록을 남기려고한다  시작하기에 앞서 슬픈 사연 (Jenkins 도입기..) 일단 시작하기에 앞서 Jenkins을 도입하기까지의 슬픈 전설이 있다.. https://hanjungyo.tistory.com/126 코드가 변경될 때마다 빌드, 테스트, 배포 등의 작업을 자동으로 실행할 수 있음 Github" data-og-host="hanjungyo.tistory.com" dat..
Github Actions의 기본 개념 일단 Github Actions는 소프트웨어 개발 워크플로우를 자동화할 수 있는 CI/CD 도구임=> 코드가 변경될 때마다 빌드, 테스트, 배포 등의 작업을 자동으로 실행할 수 있음 Github Actions는  Github 내에서 바로 실행되기에 추가 설정이 적어 난이도가 비교적 쉽고 PR이나 커밋, 이슈, 태그 등 다양한 Github의 이벤트에 반응이 가능함!(퍼블릭 레포지토리 기준으로 무료임) 구성 요소 우선 한 번 쭉 읽어보고 밑의 예제 코드를 살펴보면 이해가 더 쉬움 Workflow Github Actions에서 실행되는 자동화된 프로세스로 .github/workflows/ 디렉토리에 .yml 파일로 정의됨=> 하나 이상의 Job으로 구성되고 push, p..
Spring Boot에서 Supabase를 연동한 후 간단한 회원가입 로직 구현  Supabase가 뭔지 모른다면 밑의 글을 읽어보고 오자 https://hanjungyo.tistory.com/124 Supabase란? (with 어떤 DB를 선택해야할까?)Supabase 사용법을 말하기에 앞서  현재 개발중인 프로젝트를 간단하게 요약하면 보이스팩을 거래하고 구매한 보이스팩을 플랫폼 내부에서 사용할 수 있게해주는 어플리케이션이다. 어떤 DB를hanjungyo.tistory.com  우선 현재 프로젝트는 초기에 Supabase 무료 플랜을 사용하며 제공해주는 OAuth도 당장은 필요가 없음만약 추후에 아키텍처가 변경되면서 DB를 변경하게 될 가능성도 있기에 Supabase 종속성을 줄여야겠다고 생각했음(일..
Supabase 사용법을 말하기에 앞서  현재 개발중인 프로젝트를 간단하게 요약하면 보이스팩을 거래하고 구매한 보이스팩을 플랫폼 내부에서 사용할 수 있게해주는 어플리케이션이다. 어떤 DB를 사용하는 것이 좋은 선택일까..? 우선 크게 3가지를 고민해보았다 1. 데이터 정합성 보장 & 트랜잭션 관리 1. NoSQL은 RDBMS에 비해 트랜잭션 지원이 어렵고 제한적임=> NoSQL에서 여러 문서에 대한 트랜잭션은 더 복잡2. 결제 시스템의 특성상 데이터 구조가 정확해야함=> RDBMS는 데이터의 무결성을 자동으로 관리할 수 있음 (일부 NoSQL에서는 최종적 일관성을 보장하긴 하지만 이로 인해 실시간 데이터 일관성이 보장되지 않을 수 있음)3. 테이블간 조인이 비효율적임=> 현재 프로젝트에서는 여러 엔티티간..
·💻 CS
'면접을 위한 CS 전공지식 노트'를 읽고 개인적으로 정리한 글입니다.   CPU는 그저 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐임그렇다면 메모리는 어떤 계층을 갖고 어떻게 관리되는지 알아보자!  3.2.1 메모리 계층   메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있음 레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적음캐시 : L1, L2 캐시를 지칭함 => 휘발성, 속도 빠름, 기억 용량 적음 (L3 캐시도 있음)주기억장치 :  RAM을 가리킴 => 휘발성, 속도 보통, 기억 용량 보통보조기억장치 : HDD, SDD를 일컬으며 비휘발성, 속도 낮음, 기억 용량 많음 RAM은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하..
·🌊 Infra/AWS
프로젝트에서 AWS IAM을 사용해야 하는 이유 이번에 프로젝트를 진행하면서 AWS로 인프라를 구축하게 되었음 다른 글에서도 다뤘지만 AWS 루트 계정을 이용하는 것은 그렇게 좋은 방법이 아님(특히나 AWS 관련 작업을 하는 사람이 여러명인 경우) 보안 문제루트 계정은 모든 권한을 가지고 있어서 리스크가 너무 큼=> 이 부분에 대해서는 루트 계정은 MFA를 설정하고 초기 IAM 계정을 만든 후 사용하지 않는 것이 AWS Best Pracitce라고 함팀원들 각자 개별 계정을 가질 수 있음 (+ 유연한 권한 관리)IAM으로 각 팀원에게 개별 AWS 계정을 부여할 수 있고 IAM User, IAM Role을 사용하여 필요한 권한만 부여할 수 있음=> 조금 더 정확히는 하나의 AWS 계정이고 계정 내에서 개별..
현재 DB가 세팅되지 않은 상황에서 급하게 프론트엔드와의 연동 테스트를 위해 임시 회원가입 로직을 확인할일이 생겼다이를 위해 실제로 사용할 DB가 세팅되기 전까진 H2 DB를 임시로 선택하였고, 관련 내용 학습 및 실제 사용에 대한 기록을 남기려고 한다 H2 데이터베이스란? H2는 JAVA로 작성된 오픈 소스 RDBMS임  인메모리 데이터베이스 : 인메모리 모드에서 작동하여 데이터를 메모리에 저장하므로 빠른 성능을 제공함(이 경우 애플리케이션 종료 시 데이터가 사라짐)파일 기반 데이터베이스 : 데이터를 파일로 저장할 수 도 있기에 영구적인 저장이 가능함JDBC 지원 : JDBC API를 통해 자바 애플리케이션과 쉽게 통합될 수 있음웹 콘솔 : 웹 기반 GUI 콘솔 제공해줌(관리 용이) 굉장히 작고 가볍기..
개인적으로 찾아보며 정리한 내용이고 주관적인 생각이 들어있어오류 사항이나 더 좋은 피드백은 언제나 환영합니다..!   진행 중인 프로젝트에서 백엔드 서버는 아직 배포되지 않은 상태이고 백엔드팀 (2명) 모두 AWS로 인프라 구축을 진행해왔기에 AWS에 굉장히 익숙한 상황이라 자연스럽게 AWS로 전체 인프라를 구축하기로 예정되어 있는 상황이다현재는 사용자의 요청(사용자의 보이스)이 들어오면 인공지능 모델을 통해 보이스팩을 만들어 S3(스토리지)에 저장해주는 로직을 구현중에 있다그러던중 새로운 방식의 도입에 대해 고민해보게되는데... GCP Cloud Run 을 사용하자 GCP Cloud Run을 생각하게된 결론부터 말하자면 GPU 서버리스를 지원하기 때문이다. 서버리스를 사용하자 인프라 관리 부담 최소화 ..
·💻 CS
'면접을 위한 CS 전공지식 노트'를 읽고 개인적으로 정리한 글입니다.  운영체제(Operating System)는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스임 => 한정된 메모리나 시스템 자원을 효율적으로 분배 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어(firmware)라고 함 3.1.1 운영체제의 역할과 구조 운엉체제의 역할 운영체제의 역할을 크게 4가지가 있음 CPU 스케줄링과 프로세스 관리=> CPU 소유권을 어떤 프로세스에게 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리함메모리 관리=> 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리함디스크 파일 관리=> 디스크 파일을 어떠한 방법으로 보관할지 관리함I/O 디바이스 관리=> I/O 디바..
개인적으로 찾아보며 정리한 내용이고 주관적인 생각이 들어있어오류 사항이나 더 좋은 피드백은 언제나 환영합니다..!   이야기하기에 앞서 애자일(agile)이란? 애자일이란 소프트웨어 개발 방식의 하나로, 변화하는 요구사항에 유연하게 대응하기 위해 짧은 개발 주기로 제품을 출시하고, 지속적으로 개선하는 소프트웨어 개발 방법론임  => "너무 체계적인 개발론" 과 "너무 계획이 없는 개발론" 둘 사이의 균형을 잡자는 의도로 나온 개발방법론임주요 특징으로는  Iterative Development : 기능을 한 번에 다 만드는 것이 아니라, 최소 기능부터 배포하고 지속적으로 개선Customer Collaboration : 개발팀과 고객 간의 긴밀한 협업Flexibility : 요구사항이 변경되더라도 빠르게 반..
매일메일 백엔드 질문을 참고해 개인적으로 학습한 내용을 정리하였습니다.오류가 있다면 언제든 피드백 주시면 바로 반영하겠습니다..!   시작하기에 앞서 JPA란? JPA(Java Persistence API)는 자바 객체를 데이터베이스에 저장하고 불러오는 방법을 정의한 표준 API임 => ORM(Object-Relational Mapping) 기술을 제공하는 자바의 공식 표준임 JPA는 자체적으로 동작하지 않고 Hibernate와 같은 구현체가 필요함  EntityManager란? EntityManager에 대해 알기 위해선 Persistence Context에 대해 알아야함 Persistence Context는 엔티티를 영구 저장하는 환경으로 1차 캐싱, 쓰기 지연, 변경 감지를 통해 영속 로직을 효율적..
·💻 CS
'면접을 위한 CS 전공지식 노트'를 읽고 개인적으로 정리한 글입니다.  2.5.1 HTTP/1.0    HTTP/1.0은 기본적으로 한 연결당 하나의 요청만 처리하도록 설계되었음 => 이는 RTT 증가를 불러옴 RTT는 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간임  RTT의 증가를 해결하기 위한 방법 매번 연결할 때마다 RTT가 증가하니 서버에 부담이 많이 가고 사용자 응답 시간이 길어졌음 => 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩 사용 이미지 스플리팅 많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드받고, 이를 기반으로 backgroud-image의 positi..
JJunGyo
'분류 전체보기' 카테고리의 글 목록 (2 Page)