Study

Study

[Infra] GitHub Actions를 통한 CI/CD 구축 - 1

소프티어 부트캠프 프로젝트 과정을 진행하면서 몸으로 부딪히면 구축했던 CICD의 방법에 대해 남겨보려 한다. 도입 이유 마스터님들이 강조하신 애자일. 프로젝트를 시작하기 앞서 짧은 기간 내에 성공적인 프로젝트를 위해서는 애자일한 방법의 프로젝트를 적용해 보는 것이 중요하다고 하셨다. 따라서 매주 유의미한 결과를 데모 영상으로 찍어내어야 한다는 조건 또한 주어졌다. 결국 작은 부분이라도 함께 완성된 부분을 만들어나가기 위해서는 자주 배포하는 환경이 필요했고, CICD 자동화 배포 환경을 구축하게 되었다. 백엔드 개발자로서 프로젝트를 직접 배포해 본다면 CI/CD라는 키워드는 당연히 들어봤을 거라고 생각한다. 무작정 사용하고 적용하는 것이 아닌 왜 사용할까? 조금만 생각해 보자. CI 먼저 CI란 Conti..

Study

[HTTP] 쿠키와 쿠키를 삭제하는 응답 메시지 보내기

쿠키를 사용하는 이유 HTTP는 무상태를 기반으로 하는 프로토콜이다. 따라서 우리가 구현해야 하는 로그인을 구현해 사용자가 로그인을 하더라도, 이후 요청에서 마이페이지를 조회하는 요청이 오더라도 로그인 정보를 기록해두지 않아 누구의 마이페이지 인지 알 수 없다. 즉, 클라이언트가 다시 요청을 하면 서버는 이전 요청을 기억하지 못한다. → 클라이언트와 유저는 상태를 유지하지 않는다. 동작 과정 홍길동이라는 클라이언트가 서버에게 로그인을 요청한다. 로그인을 완료시킨 서버는 Set-Cookie 헤더를 통해 쿠키를 유저에게 전달한다. 클라이언트의 웹 브라우저는 쿠키 저장소에 전달 받은 쿠키를 저장한다. 로그인 이후에 웹 브라우저는 어떠한 요청을 수행하더라도 저장된 쿠키를 Cookie 헤더에 담아 전달한다. 서버..

Study/Java

[Java] 불변 객체 (Immutable Object) 란?

나만의 WAS 서버를 구현하는 도중에 클라이언트의 HTTP 메시지를 요청받고, 이를 파싱해 객체로 다루기 위한 작업이 필요했다. 이 과정에서 생성된 HttpRequestMessage 라는 클래스는 처음 파싱 이후 수정될 일이 없다는 특성을 가지고 있다. 이 특성을 만족하기 위한 객체지향 프로그래밍에서 사용되는 불변 객체에 정리하고자 한다. 불변 객체 (Immutable Object)? 불변 객체는 객체가 생성된 이후에 그 상태를 변경할 수 없는 객체를 의미한다. 한 번 생성된 객체는 재할당 되는 것이 아니라면 영원히 그 상태가 변하지 않는다. 자바에도 불변 객체가 존재한다. java.lang.String 문자열 클래스가 그 예이다. String 으로 생성된 문자열 객체의 메서드를 직접 살펴본다면 내부의 ..

Study

HTTP Request, Response 메시지 구조

HTTP 메시지 HTTP 메시지는 웹 애플리케이션에서 클라이언트와 서버 간의 통신을 위해 만들어졌습니다. 클라이언트가 요청하기 위한 Request와 요청에 대해 서버가 응답하는 Response 두 가지로 이루어져 있으며, ASCII로 인코딩 되어 있습니다. HTTP Request 메시지 GET /index.html HTTP/1.1 Host: localhost:8080 Connection: keep-alive Accept: */* body HTTP 요청 메시지는 다음과같은 형태를 띠고 있습니다. Request Line GET /index.html HTTP/1.1 가장 상단의 첫 줄을 의미합니다. 3가지의 정보를 담고 있으며, 순서대로 HTTP 메서드, 경로, HTTP 버전을 나타냅니다. HTTP 메서드 -..

Study/Java

[Java] 자바의 스레드와 동작 과정

스레드 Thread 운영 체제를 배웠다면 스레드의 개념은 익히 알 것이다. 스레드는 프로그램 수행의 가장 작은 단위를 의미한다. 스레드는 한 가지 일을 하는 프로세스의 단점을 극복하고자 여러 가지 일을 동시에 하기 위해 탄생했다. 스레드는 다음과 같은 생성 주기를 갖는다. 💡 스레드의 생성 주기 Runnable: 준비 상태로 CPU 를 점유하고 있지 않으며 대기하고 있는 상태이다. Running: 실행 상태로 CPU 가 점유하고, 실행중인 상태를 의미한다. Dead: 수행할 동작이 모두 실행이 완료된 상태를 의미한다. Blocked: 실행 중에 일시 중단되어 CPU 점유를 잃은 상태를 의미한다. wait() 메서드를 통해 대기 상태로 전환되며, 대기 상태에서 notify() 메소드를 통해 Runnable..

Study/Java

[JUnit] 다양한 Assertions 사용하기

테스트 코드 작성의 중요성은 이제는 널리 알려져 있다. 어떤 코드든 예상치 못한 상황이 발생할 수 있기에, 이를 방지하고자 테스트 코드를 작성한다. 단위 테스트, 기능 테스트 다양한 기준으로 작성되며, 테스트 코드를 먼저 작성한 뒤 구현을 하는 TDD, DDD, BDD 등 다양한 개발 방법론도 존재한다. 테스트 코드 작성을 위해 다양한 도구들이 사용된다. 그중 Java를 테스트하기 이한 JUnit에 대해 간단히 살펴보고, 조금 더 다양하게 테스트하기 위한 Assertion 메서드들을 정리해보려 한다. JUnit 이란? JVM 위에서 쉽게 테스트를 할 수 있게 해주는 도구이다. 이번 내용에서 다루는 JUnit5는 Java 8 이상에서 동작함에 유의하자! Assertion 이란? 테스트를 수행하며, 결과에 ..

Study/Java

[JAVA] 동일성, 동등성 그리고 equals, hashcode 재정의

equals를 사용한 테스트 코드를 작성하고, 실제 기능을 구현한 뒤 테스트 해보았지만, 실패했다. 분명 내 코드에는 문제가 없다고 생각했고, 열심히 디버깅을 해 본 결과 equals 메소드에서 서로 다른 메모리 주소를 갖기 때문에 false를 반환했던 것이다. 이러한 문제는 equals, hashcode 재정의를 통해 해결할 수 있지만, 좀 더 근본적인 이유를 간단히 정리해보고자 한다. 자바의 동일성 (identify), 동등성 (equality) 먼저 자바의 동일성과 동등성에 대해 알아보자. 동일성 (identify) 이란 무엇일까? 나는 동일성 (identify) 이란 태생부터 존재하는 유일한 것이라고 생각했다. 나 홍길동은 태어나서 존재하는 단 한 명의 인간이다. 나와 같은 이름을 가진 다른 홍길..

Study/AWS

[amazon AWS] 아마존 EC2 프리티어 서버 생성하기

학교 졸업 프로젝트가 어느 정도 진전해 프론트에서도 어느 정도 테스트해 보며 작업해야 하기에 EC2로 서버 배포를 할 일이 생겼다. 예정했던 대로 aws ec2를 통해 서버를 올리기로 해 해당 과정을 기록해보려 한다. 로컬 환경은 mac m1을 기준으로 사용했다. 준비 먼저 프리티어로 서버를 생성했기에 결제 카드 등록을 마친 프리티어 계정이라 가정하고 진행한다. 인스턴스 생성 인스턴스란 간단하게 하나의 컴퓨터를 의미한다. 이는 웹 서버가 될 수 있고, DB가 될 수 있다. 여기서 EC2란 사용자의 입맛대로 구성할 수 있는 서비스라고 한다. 본격적으로 인스턴스를 생성해보자! 우선 리전 설정을 하자. 리전은 호스팅 되는 위치를 의미하는데 가까운 곳에 위치할수록 서버 속도가 빨라진다. 리전에 따라 인스턴스의 ..

Study/Python

네이버 Clova AI OCR API를 사용해보자. (2)

API 예제 코드 API 통신을 테스트하기 위해 document를 참고하자. https://guide.ncloud-docs.com/docs/ko/clovaocr-overview CLOVA OCR 개요 guide.ncloud-docs.com https://api.ncloud-docs.com/docs/ai-application-service-ocr-ocr CLOVA OCR Custom API api.ncloud-docs.com 두 번째 링크의 Custom API 탭에 가면 각 언어 별 호출 예제 코드가 존재한다. 간단한 파이썬 코드를 통해 API 호출을 진행해 보았다. import requests import uuid import time import json api_url = 'YOUR_API_URL' s..

Study/Python

네이버 Clova AI OCR API를 사용해보자. (1)

이번에 학교 해커톤에 참여하면서 Clova AI에서 제공하는 OCR 기술의 API를 연동해 프로젝트를 구성했다. 따라서 OCR API를 사용하기 위해 처음으로 네이버 클라우드에 가입해, 연동해 보았는데, 사용 방법을 기록해두려 한다. 네이버 클라우드는 가입되었다고 가정하고 진행해보겠다. CLOVA OCR, API Gateway 신청 먼저 Clova에서 서비스 사용 신청을 해주어야 한다. https://www.ncloud.com/product/aiService/ocr NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certificat..

ddingmin00
'Study' 카테고리의 글 목록