본문 바로가기

분류 전체보기

(92)
Travis CI 연동 (1) CI/CD관련하여 Travis로 구현해보려고 한다. Travis CI 설정 https://travis-ci.com/ 에서 깃허브 계정으로 로그인을 한 뒤, github 연동을 활성화 프로젝트 설정 Travis CI의 상세한 설정은 프로젝트에 존재하는 .travis.yml / YAML로 설정 YAML이란? 쉽게 말해서 jSON에서 괄호를 제거 했다고 생각하면 된다. YAML 이념이 "기계에서 파싱하기 쉽게, 사람이 다루기 쉽게"이다 보니 익숙하지 않은 사람이라도 읽고 쓰기가 쉽다. 프로젝트의 gradlew과 같은 위치에서 .travis.yml을 생성한 후 아래의 코드를 추가 language: java jdk: - openjdk8 #1 branches: only: - master # Travis CI 서버의..
CI/CD 항해 71일차 2022.03.21 배포 자동화 서버에 기능을 추가 하려면 개발자가 로컬 PC에서 개발을 하고 테스트까지 진행한 뒤에 문제가 없을 경우 사용자가 사용할 수 있도록 수정된 코드를 실서버에 반영해야 한다. 서버에 반영을 하는 것을 "배포"라고 하고 배포(Deploy) 하기 위한 과정을 "빌드"라고 한다. 서비스에 사용자가 늘어나면서 운영하는 서버 또한 늘어난단다면 수동배포의 한계가 있을것이다. 운영하는 서버가 10대라고 하면, 10대를 모두 접속해 직접 배포할 파일을 SFTP를 통해 전달하고 서버를 종료하고 배포파일을 풀고 서버를 다시 실행시키는 작업을 10대에 진행을 해야하고 10대에 서버를 수동으로 진행하는 과정에서 배포가 누락되는 경우도 발생한다고 한다. 이런한 문제를 해결하기 위해 배포..
HTTP vs HTTPS 기술멘토링에서 받은 피드백으로 보안성을 생각하여 팀원들과 HTTPS를 적용하기로 했다. 먼저 기존에 우리가 계속 사용했던 HTTP와 HTTPS의 차이점과 HTTPS에 대해 찾아보았다. HTTP HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자이며 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다. HyperText Transfer Protocol OSI 7 계층 중 7계층 응용계층에 속하는 프로토콜 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용 처음에는 www 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용되었고, 현재에는 이미지, 비..
HTTP Method 역할 HTTP Method HTTP Method란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식,쉽게 말하면 서버에 요청을 보내는 방법입니다. Method 종류 GET 특정 리소스(데이터) 취득 (Read) URL 형식으로 웹서버 측에 리소스를 요청 GET을 사용하는 요청은 오직 데이터를 받기만 한다. 상세 페이지 로드 등 서버에서 어떤 데이터를 가져와서 보여주기 위한 용도 HEAD 메세지 헤더(문서 정보) 취득 GET과 비슷하지만, 실제 문서를 요청하는 것이 아니라 문서의 정보를 요청 POST 내용 전송 (Create) 클라이언트에서 서버에 데이터를 추가·작성하고, 요청 데이터를 HTTP BODY에 담아 웹서버로 전송 입력, 생성 등 행동하는 행위에..
웹 통신의 흐름? 주소창에 URL(www.google.com)을 입력했을때 통신의 흐름을 알아보자. 웹 월드 와이드 웹의 약자로 인터넷을 통해 접근할 수 있는 정보 공간. URL로 문서 등 리소스를 식별하고 리소스 간 하이퍼링크로 연결될 수 있다. 웹 통신 HTTP를 통해 리소스를 전송한다. 웹에 연결된 컴퓨터는 클라이언트와 서버로 구분할 수 있다. 서버 : 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템 클라이언트 : 사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스, 웹 브라우저, 모바일 앱 등 웹 통신 과정 IP 주소 : 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신을 하기 위해서 사용하는 특수한 번호 (128.0.0.1 과 같은 32비트로 구성되어 있다.) DNS : IP주소와 도..
Embedded Redis 설정 Embedded Redis 설정 /** * 로컬 환경일경우 내장 레디스가 실행 */ @Profile("local") @Configuration public class EmbeddedRedisConfig { @Value("${spring.redis.port}") private int redisPort; private RedisServer redisServer; @PostConstruct public void redisServer() { redisServer = new RedisServer(redisPort); redisServer.start(); } @PreDestroy public void stopRedis() { if (redisServer != null) { redisServer.stop(); } }..
Redis(레디스) 항해 58일차 2022.03.08 Redis를 사용해서 채팅 내용을 저장 하려고 했으나 멘토님의 조언으로 채팅 내역은 DB에 저장하고 채팅 참여 인원수에 Redis를 사용해보기로 했다. Redis Key-value의 비정형 데이터로 구성해 저장, 관리하기 위한 비관계형 데이터베이스 관리 시스템 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS 장점 List, Array데이터를 처리하는데 효과적이다. tring, List, Set, Hash , Sorted sets 등 여러 데이터 포맷을 지원하여 다양한 방식의 데이터 활용이 가능 원자성 보장을 위한 처리 함수를 제공한다. 여러 프로세스에서 같은 데이터를 요청 시 , Atomic 처리를 하기 위한 전용 함수를 제공 메모리를 활용하면서도 영속적인..
WebSocket_2 채팅 고도화 ChatMessage 채팅 메시지를 주고받기 위한 DTO @Getter @Setter public class ChatMessage { // 메시지 타입 : 입장, 채팅 public enum MessageType { ENTER, TALK } private MessageType type; // 메시지 타입 private String roomId; // 방번호 private String sender; // 메시지 보낸사람 private String message; // 메시지 } ChatRoom 채팅방을 구현하기 위한 DTO 채팅방은 입장한 클라이언트들의 정보를 가지고 있어야 하므로 WebsocketSession 정보 리스트를 멤버 필드로 갖는다. 채팅방은 입장,대화하기의 기능이 있으므로 hand..
WebSocket(웹소켓) 최종프로젝트에서 구현 예정인 기술은 Websocket방식인 실시간 채팅이다. 배운적도,구현해본 경험도 없기에 기초 개념부터 배워야했다. 참고 자료들로 조금씩 구현해봤다. Springboot Websocket서버 구축 build.gradle에 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-websocket' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlo..
S3로 파일 업로드 마지막 프로젝트를 진행중이며 유저가 업로드 하는 이미지 파일을 S3 클라우드에 저장하는 방식을 사용헤보기로 했다. 먼저 AWS S3 Bucket을 생성하고 코드 구현을 했다. S3 버킷 생성 S3에서 버킷 만들기 클릭 1) 버킷 이름과 리전 설정 버킷 이름은 고유값으로 설정 2) 퍼블릭 액세스 설정 ※ 외부에 S3을 공개할 경우 모든 퍼블릭 액세스 차단을 체크 해제하고, 공개하지 않는다면 체크를 해주면 된다. 3) 버킷 정책 생성 버킷 생성까지 완료 되었으면 외부에서 접근이 가능하도록 버킷 정책을 설정해줘야 한다. 생성된 버킷명을 클릭해서 들어가면 아래와 같은 탭이 있는데 [권한] 탭을 클릭해서 들어가면 버킷 정책이 있다. 편집으로 들어가자. 정책 생성기를 클릭하고 설정해야한다. (버킷 ARN은 복사를 ..