본문 바로가기

전체 글

(9)
Gemini Code Assist 코드 리뷰 도입해보기 들어가면서부트캠프에서 진행했던 프로젝트에서 담당 컨설턴트님이 연동돼있던 Gitlab 레포에 Gemini 모델을 사용해코드 리뷰 시스템을 도입해주셨었다.우리 팀은 이미 코드 리뷰를 진행하고 있었지만 해당 시스템이 도입되면서프로젝트에 치명적인 로직이나 변수명, 성능 이슈 등을 1차적으로 조기 발견하고자체적으로 수정한 후 팀원들끼리 코드 리뷰를 하게 되면서 코드 리뷰 시간이 줄어들고 퀄리티도 올라갔었다.이미 코드 작성에는 AI의 도움을 많이 받고 있지만, 그것과 별개로 AI를 통해 리뷰하는 방법을 알고자 해당 글을 작성한다. 컨설턴트님이 구현한 코드 리뷰 시스템우선 방법을 컨설턴트님에게 묻기 전에 제미나이 코드 어시스트에 대해 좀 알아봤었는데,Github app을 개인 레포에 연결해서 사용하고 루트 프로젝트에..
프로세스 동기화, 세마포어 & 뮤택스 들어가면서최근에 진행했던 모의 면접 컨설팅에서 멘토분이 프로레스와 스레드의 차이에 대해 물어보셨다.각각의 특징과 장단점에 대해서는 적당히 대답했지만추가 질문이었던 프로세스 동기화 방식인 세마포어와 뮤택스에 대해자세히 대답하지 못해서 블로그를 통해 다시 정리하도록 한다. 동기화는 무엇인가쓰레드는 공유 자원을 공유하는것으로 이해하고 있다. 그러면 멀티쓰레드 환경에서 이 공유자원에 쓰레드들이 동시에 접근할 때 발생하는 문제를 방지하기 위한 방식을 동기화 라고 한다. 동기화가 필요한 이유여러 쓰레드가 한 데이터에 대해 읽기와 쓰기를 동시에 하게 되면데이터에 충돌이 생겨서 데이터 일관성을 유지할 수 없기 때문이다. 다른 블로그에 아주 많이 떠돌아 다니는 간단한 코드를 보자. public class Account..
세션 사용하기, 그리고 Redis 들어가면서 SSAFY 내에서 진행한 'AI 프롬프트 자서전 작성' 프로젝트에서 아키텍쳐 설계부분과 로그인 인증을 맡아 진행했습니다. 이전 프로젝트에서는 JWT를 사용해 인증/인가를 구현했었고, 다른 방식의 인증을 경험하기 위해 해당 프로젝트에서는 세션을 사용해서 구현했습니다. 프로젝트 기간내에 세션을 먼저 구현한 이후 Redis를 추가적으로 도입해 적용했기 때문에 간단하게 세션과 토큰의 차이를 설명한 이후 Redis 적용 방식를 기록하겠습니다. 세션 vs 토큰 기본적으로 세션은 JWT에 비해 안전하다고 볼 수 있습니다. JWT는 클라이언트에서 모든 인증정보를 해쉬된 값을 통해 토큰을 관리하고, 이 토큰이 '유효한지 아닌지'만 서버에서 확인하고 요청에 대한 응답을 보내게 됩니다. 이런 경우 클라이언트에서..
AWS 클라우드 아키텍쳐 이해하기 들어가면서해당 글은 SSAFY 2학기 공통 프로젝트에 앞서 인프라를 담당하게 되어 원티드 프리온보딩 백엔드 챌린지를 통해 알게 된 AWS 공식 유튜브의 자료를 공유하고, 요약하기 위한 글입니다. https://www.youtube.com/watch?v=HI0fPiZpniY천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기 - 이창수 솔루션즈 아키텍트(AWS Korea) https://www.youtube.com/watch?v=6zb-bs_mmFo천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기 - 김준형 솔루션즈 아키텍트(AWS Korea ) 서비스 초기 단계 EC2 인스턴스를 먼저 생성하고, 웹서버나 각각의 어플리케이션을 이에 올린다.고정 IP가 필요하기 때문에 elastic IP를 할당받..
[원티드 프리온보딩] 2월 백엔드 챌린지 후기 챌린지 기간 2024.02.06 ~ 2024.02.15 매주 화, 목 19 ~ 22시 챌린지 강의 주제 챌린지 강의 커리큘럼 후기 취업 준비생으로 상반기를 기다리면서 알고리즘이나 CS 공부를 하는데 의욕이 생기지 않아서 원티드 사이트를 뒤져보다가 프리온보딩 챌린지를 발견하게 되었다. 처음 참여해본 프리온보딩 백엔드 챌린지인데, 결과적으로는 '아주아주' 만족스러운 강의였다. 참가 시 1000원의 참가비를 내는데, 사실상 무료에 가까운 가격이다. 프리온보딩 챌린지 자체가 매달 몇천명씩 듣는다는데, 아마 허수를 가려내기 위한 조치가 아닐까 싶다. 또한 챌린지 이전에 사전과제를 제공해주시는데, 챌린지 시작전에 한번 살펴보면서 커리큘럼의 내용을 웜업하기 좋았던것 같다. (이번 2월 챌린지에서는 사전과제 내용이 어..
[WEB] 웹 서버 vs WAS [WEB] 웹 서버 vs WAS 웹 서버 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 컨텐츠(html, css 등)를 제공하는 컴퓨터 프로그램 WAS : DB 조회 및 다양한 로직 처리 요구시 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 웹 서버와 WAS의 개념을 대충은 알고 있지만, 정확하게 어떤 차이가 있는지 왜 WAS가 있는데 웹 서버를 따로 두는지 정확한 이유를 몰랐기 때문에 이 부분에 대해 학습하고자 포스팅 한다 WEB SERVER??? Web 인터넷을 기반으로 한 정보를 공유, 검색할 수 있게 하는 서비스 URL(주소) , HTTP(통신 규칙), HTML(내용) 웹의 3가지 요소 Server 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템 +..
[Database] 트랜잭션의 격리성 [DB] 트랜잭션 격리성 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 트랜잭션은 다른 트랜잭션의 연산에 끼어들 수 없다. 격리성은 '다른 트랜잭션이 연산에 끼어들 수 없다' 라는게 정의지만, 일반적으로 접근 레벨이 존재하고 DB에 따라 설정이나 권한을 주는 등의 작업이 가능하다. 이 격리성 수준을 강하게 처리할지, 약하게 처리하냐가 개발자의 영역이다. 우선 첫번째로 격리성으로 인해 발생할 수 있는 문제점들을 알아보고, 격리성 레벨에 대해 알아보도록 하자 격리성으로 인해 발생할 수 있는 문제들 1. Dirty Read Dirty Read는 쉽게 말해 Commit 되지 않은 데이터를 읽는 것을 말한다. 1번 세션에서 YKH 라는 데이터를 Insert하고, 2번 세션에서는 YKH 데이터를 Select한다..
[Database] 트랜잭션 개념 [DB] 트랜잭션 하나의 논리적 기능을 수행하기 위한 작업의 단위 백엔드 개발자로서 대용량 데이터 처리를 하다 보면 동시성을 제어하게 될 필요가 생기거나, 비즈니스 로직과 트랜잭션 처리를 분리해줘야 할 상황이 종종 생긴다 하더라. 어느 쪽이던 DB를 만지게 된다면 반드시 알아야할 개념이니 확실하게 공부해 두자. 트랜잭션의 특징 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위 하나의 트랜잭션은 Commit 되거나 Rollback 됨 트랜잭션의 성질 원자성 (Atomicity) 1. 트랜잭션의 연산은 모두 데이터베이스에 반영되던가 or 전혀 반영되지 않아야 한다. 2. 트랜잭션..