Software Development/Infra2024. 1. 8. 13:42컨테이너, 도커, ECS(오케스트레이션 툴) 이해하기

컨테이너를 실행하는 고도로 안전하고, 안정적이고, 확장 가능한 방식 Amazon Elastic Container Service(Amazon ECS)는 컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 조정에 도움이 되는 완전관리형 컨테이너 오케스트레이션 서비스입니다.- 공식 페이지 AWS ECS 소개문 컨테이너란? 어플리케이션과 그 어플리케이션을 실행하는데 필요한 모든 것을 포함하는 독립적인 실행 환경입니다. 가벼운 VM이라고 이해할 수 있습니다. 컨테이너는 애플리케이션의 코드, 구성 및 종속성을 하나의 객체로 패키징하는 표준화된 방식을 제공합니다. 컨테이너는 서버에 설치된 운영 체제를 공유하며 리소스가 격리된 프로세스 형태로 실행되므로 환경에 상관없이 빠르고 안정적이며 일관된 배포를 보장합니다. - A..

Software Development/Trial-and-error2024. 1. 7. 00:54[Java] StringTokenizer 정수 두 개 입력 오류(NoSuchElementException)

자바로 PS를 처음 해보다보니, 여러 시행착오를 겪고 있다. 파이썬이었으면, input = sys.stdin.readline().rstrip() a,b = map(int, input().split()) 이면 끝날 일인데 ㅋ 오류를 발생시킨 코드는 다음과 같았다. class Solution { public static void main(String args[]) throws IOException { for(int test_case = 1; test_case

Software Development/Spring2024. 1. 5. 13:13HTTP, REST API 이해하기

HTTP란? 서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜(일종의 약속) HTTP 주요 Request 메소드 Request 메소드란? 클라이언트가 서버에 무언가를 요청하는 명령어 GET: 리소스 조회 POST: 주로 등록에 사용, 요청 데이터 처리 PUT: 리소스를 덮어쓰기, 없을 경우 생성 PATCH: 리소스 부분변경 DELETE: 리소스 삭제 HTTP 주요 Response 메시지 Response란? 서버가 클라이언트에 보내는 메시지 Status Line: 200 OK, 404 Not Found와 같은 상태 메시지 Header: 응답과 관련된 다양한 정보를 포함. Body: 서버가 클라이언트에 반환하는 데이터. HTML 데이터, JSON 데이터 등.. REST HTTP를 기반으로 ..

JPA와 @Entity 어노테이션 이해하기
Software Development2024. 1. 5. 13:12JPA와 @Entity 어노테이션 이해하기

JPA란? JPA를 알기 전에, ORM이 뭔지 알아봅시다. ORM이란? 객체와 RDBMS를 자동으로 맵핑해주는 것을 말합니다. 객체지향 프로그래밍은 클래스를 사용하고, RDBMS는 테이블을 사용하는데, ORM을 통해 클래스를 테이블과 일치시켜 주는 개념입니다. JPA란? 정확히는 Java에서 ORM을 지원하기 위한 인터페이스(스펙)입니다. 특정 기능을 하는 라이브러리가 아닙니다. 이 기능을 하는 구현체로 대표적인 것이 Hibernate(라이브러리) 입니다. graphic-api는 어떤 JPA를 사용하나? Spring Data JPA를 사용합니다. 내부적으로는 Hibernate가 ORM 엔진 역할을 해줍니다. JPA의 다양한 Annotation들(꼭 읽어볼 것) [JPA] 엔티티와 매핑. @Entity, ..

Software Development/Spring2024. 1. 5. 13:09[Spring] Controller, Service, Repository 구조

MVC 패턴을 들어보셨나요? 소프트웨어공학 시간에 한번쯤은 짚고 넘어가는 부분입니다. 응용 프로그램을 개발할 때, Model, View, Controller로 나누어 그 구조를 구성하는 방법입니다. Model 어플리케이션의 데이터, 자료를 의미합니다. View 사용자에게 보여지는 부분, 즉 유저 인터페이스를 의미합니다. Controller Model과 View 사이를 이어주는 브릿지 역할을 의미합니다. 조금 더 자세히 설명하면 다음과 같습니다. 모델(Model) 프로그램에 사용되는 데이터를 의미하며 데이터베이스(DB), 상수, 문자열과 같은 변수들, 비전 프로그램이라면 카메라 정보와 같은 것들이 해당됩니다. 모델에는 뷰나 컨트롤러의 정보가 전혀 없습니다. 단지, 정보만 반환하거나 설정할 수 있습니다. 뷰..

[Spring] Gradle 이해하기
Software Development/Spring2024. 1. 3. 13:33[Spring] Gradle 이해하기

Gradle이란? - Groovy를 이용한 빌드 자동화 시스템입니다. (Spring에서 패키지 관련 내용 보완 필요) 빌드 자동화란? - 소프트웨어 개발자가 반복해서 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하여, 믿을 수 있는 결과물도 생산해낼 수 있는 일련의 작업 방식 및 방법을 말합니다. Gradle을 사용한 프로젝트의 구조 이해하기 $ gradle init # gradle로 프로젝트 생성. 몇가지 설정들을 선택해주면 된다 $ tree # 기본 gradle 생성 자바 프로젝트는 다음과 같은 구조를 가진다 ├── app # 기본 프로젝트 명 │ ├── build.gradle # 빌드 스크립트를 작성하는 곳 │ └── src # 소스 코드 │ ├── main # 프로그램 코드 │ │ ├── ..

Software Development2024. 1. 3. 10:09[협업] 사이드 프로젝트에서 프론트와 백엔드가 협업하는 방법

창업 동아리에서 백엔드 역할을 맡고, 방학 기간동안 본격적으로 개발에 들어가기 앞서, 협업 방식에 대해 논의가 있었어서 이를 정리해보고자 한다. 정답은 없겠지만, 우선 우리 팀은 이렇게 진행해보기로 결정했다. 어쩌다 보니 백엔드 파트장을 맡은 입장에서 정리해본다. 0. 우선, 자바의 코드 컨벤션을 정하고 이에 따르기로 했다. 우리는 네이버 핵데이 코딩 컨벤션을 선택했다. https://naver.github.io/hackday-conventions-java/ 캠퍼스 핵데이 Java 코딩 컨벤션 중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호 naver..

[Spring] 프로젝트 이해와 환경설정
Software Development/Git&Environment2024. 1. 2. 18:12[Spring] 프로젝트 이해와 환경설정

기존 Spring 실습에서는, SpringBoot 3 버전과 Java 17을 활용하여 실습을 진행했다. 인턴으로 들어와서 프로젝트를 빌드해보고 있는데, 환경 설정과 프로젝트 구조가 조금 달라서, 이를 정리해보고자 한다. 1. SpringBoot 2.7 + Gradle, Java 11, Github 2. 서버는 AWS ECS를 사용한다. (EC2 사용 + DevOps를 합친 느낌) 3. 멀티모듈 구조를 채택하여, admin, batch, api, core 파트를 각각 따로 관리하고 있다. 4. 의존성의 경우, 최상단 디렉토리의 build.gradle를 확인하면 알 수 있는데, admin, batch, api가 core에 의존하는 구조이다. 5. CI/CD의 경우 Github Action을 사용하는데, de..

image