전체 글 183

CDN이란? (What is Content Delivery Network?)

CDN, CDN 자주 들어봤는데 간단하게만 이해하고 명확히 그 개념을 알지 못했다. 이번 포스팅을 통해 CDN에 대해 자세히 알아보도록 하겠다! CDN (Content Delivery Network) CDN은 Content Delivery Network의 준말로 직역하면 콘텐츠를 전달하는 네트워크라는 의미이다. CDN은 웹페이지, 이미지, 동영상 등의 콘텐츠를 서버에서 사용자로 전달한다. 그런데, 그런 것들은 이미 인터넷망을 통해 이미 전달되고 있지 않은가? 그렇다면 CDN은 왜 필요한 것일까? CDN은 왜 필요할까? 분명히 CDN 없이도 서비스들은 동작한다. 먼저 일반적인 클라이언트와 서버의 통신을 생각해보자. 누군가 어떠한 사이트에 접속한다는 건 해당 사이트를 제공하는 서버 컴퓨터에 방문자의 컴퓨터가..

Base/용어 개념 2023.01.25

[Spring] 연관관계를 갖는 엔티티를 DTO로 저장할 때 문제 (클라이언트에서 foreign key인 ID만 사용해서 저장하는 법)

문제의 발단은 이러했다. @Getter @NoArgsConstructor @Entity(name = "question_posts") public class QuestionPosts extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "question_post_id") private Long questionPostId; @ManyToOne @JoinColumn(name = "user_id", nullable = false) private Users user; @ManyToOne @JoinColumn(name = "dept_id", nullable = false) private DeptCl..

Back-End/Spring JPA 2023.01.08

[Spring] Test 중 발생한 Dto의 'Cannot construct instance of...' 에러

위와 같은 에러가 발생했다. 처음에 다른 에러도 나서 Service, Controller 부분 다 찾아보고 디버깅 해봤는데 아래 부분에서 계속 오류가 나고 멈추는 것이었다. 하지만 문제는 역시 에러 코드를 잘 읽어야했다... Dto 부분이 문제였고 이는 기본 생성자가 없기 때문이었다. ObjectMapper가 @RequestBody를 바인딩 할 때 기본 생성자를 사용하기 때문에 그런 것이었다. lombok으로 기본 생성자를 만들어 준 후 해결되었다.

[Spring] @RequestBody 사용 시 boolean 변수 바인딩 에러 (Boolean variable binding error in requestbody annotation)

위 테스트 코드를 작성하던 중 발생한 문제였다. post를 하기 전 requestDto에서는 분명히 isActive라는 변수의 값이 true였으나 post 한 후 isActive의 값이 false로 나오는 것이었다. 다른 변수의 값들은 멀쩡히 잘 나와서 참 이해하기 어려운 버그였다... 코드를 더 살펴보니 dto에는 문제가 없어보였고 repository의 test 코드는 성공했다. 이에 controller단의 버그라 생각하고 디버깅을 진행하였다. 진행해보니 확실히 Controller에서 문제가 있었다. Controller에서 requestDto를 받는 과정에서 값이 위와 같이 바뀌는 것 같았다. 그렇다면 왜 다른 값들은 멀쩡한데 isActive 값만 버그가 나는걸까? https://projectlombo..

[Spring] 스프링 웹 계층 (spring web layer)

● Web Layer - 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역이다. - 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice)등 외부 요청과 응답에 대한 전반적인 영역을 이야기한다. ● Service Layer - @Service에 사용되는 서비스 영역이다. - 일반적으로 Controller와 Dao의 중간 영역에서 사용된다. - @Transactional이 사용되어야 하는 영역이기도 하다. ● Repository Layer - Database와 같이 데이터 저장소에 접근하는 영역이다. - Dao(Data Access Object) 영역으로 이해할 수 있다. ● Dtos - Dto(Data Transfer..

세션 vs 토큰 vs 쿠키, JWT란? (인증과 인가의 차이, authentication authorization 차이, 세션과 쿠키의 개념, JWT의 개념)

로그인을 구현한다면 꼭 알아야 할 개념들이다. 이번에 프로젝트를 진행하면서 Next-Auth를 사용해 소셜 로그인을 구현했는데, 이때 공부한 내용들과 실제 프로젝트에서 사용한 인증, 인가 방법에 대해 소개하겠다. 쿠키(Cookie)란? 먼저 쿠키다. 쿠키는 사용자를 기억하기 위해 서버가 사용자의 브라우저에 저장하는 데이터(작은 기록 정보 파일)라고 할 수 있다. 사용자가 사이트에 방문하면, 1. 브라우저는 서버에 요청(request)을 보내고 2. 서버는 응답(response)한다. 이 응답에는 사용자가 찾던 페이지 정보, 데이터뿐만 아니라 브라우저에 저장하고자 하는 쿠키가 있을 수 있다. 이 쿠키를 브라우저에 저장하게 되면, 사용자가 해당 웹 사이트를 방문할 때마다 브라우저가 자동으로 해당 쿠키를 요청..

Base/용어 개념 2022.12.20

[소프트웨어 마에스트로] SW마에스트로 13기 수료 후기 (맡은 역할 / 프로젝트 소개 / 기술적 어려움 극복 사례 / 협업 방식)

오늘인 12월 15일 수료식을 끝으로 소마 생활이 끝났다. 약 8개월(4~5월 예비과정 + 6월~11월 본과정)간의 소마 생활을 모두 마무리 하고 이제 13기 연수생에서 수료생이 되었다. 정말 많은 것을 경험하고 배우며 성장할 수 있는 시간이었다. 모든 것을 적을 순 없겠지만 성장한 부분, 느낀 점등을 정리하고 진행한 프로젝트를 구체적으로 소개해보려고 한다. 팀에서 어떤 역할을 수행했나? 프론트엔드 개발자로 참여했으며 여러가지 일을 도맡아 처리하였다. 웹 프론트엔드 개발 및 크로스 플랫폼 앱 개발 : 웹으로 서비스를 개발하고 이를 웹뷰로 감싸 크로스 플랫폼 앱을 만듦 (+ 로그인 구현) 전문가 및 제휴 기업 컨택 관리 및 인터뷰 진행 : 약 50명의 약사 및 전문의와 20개의 제약사에 직접 전화 혹은 이..

[Spring] JPA 란? (JPA의 탄생 이유와 개념, 장단점) (+ ORM이란 / ORM의 개념)

기존의 문제점 현대의 웹 어플리케이션에서는 대부분 관계형 데이터베이스(RDB)가 쓰인다. (ex. Oracle, MySQL...) 그러다 보니 객체를 관계형 데이터베이스에서 관리하는 것은 무척 중요해졌다. 문제는 코드의 대부분이 어플리케이션 코드보다 SQL로 가득차게 됐다는 것이다. 이는 관계형 데이터베이스가 SQL만 인식할 수 있었기 때문이었다. 이에 각 테이블마다 기본적인 CRUD SQL을 매번 생성해야 했다. 이런 문제로 인해 자바 클래스를 아무리 잘 설계한다해도 결국은 SQL을 통해야만 저장, 조회가 가능했고 반복적인 SQL들이 늘어났다. 규모가 커질수록 테이블은 늘어났고 테이블의 몇 배가 되는 SQl은 만드는 것 뿐만 아니라 유지 보수도 굉장히 어려웠다. 또한 패러다임 불일치 문제도 있었는데, ..

Back-End/Spring JPA 2022.12.14

[Spring] DAO, DTO, VO의 개념과 차이점

DAO (Data Access Object) : DB의 data에 접근하기 위한 객체로 실제로 DB에 접근하는 객체이다. 프로젝트의 서비스 모델과 실제 DB를 연결하는 역할을 하며, JPA에서는 DB에 데이터를 CRUD하는 Repository 객체들이 DAO라고 볼 수 있다. (좀 더 찾아보니 DAO와 REPOSITORY에 의도와 인터페이스의 메소드 시그니처에 유사성이 존재하지만 그렇다고 해서 둘을 동일한 패턴으로 취급하면 안된다고 한다. 아래 김영한 님의 말씀을 인용해 적어둔다.) repository := dao (비슷함) 이 둘은 거의 같다고 생각하셔도 무방합니다. 좀 더 깊이있게 차이를 설명하면, repotiroy는 엔티티 객체를 보관하고 관리하는 저장소이고, dao는 데이터에 접근하도록 DB접근 ..

컴공 전공 살려 군대가는 법 총정리 (2023년 ver) (군대 모집병 추천 / 군대 꿀보직 / 컴공 군대)

1년 6개월, 30개월씩 가던 시절과 비교하면 짧다고 할 수도 있지만 절대 짧지 않은 시간이라 생각한다. 전공을 잘 살려 갈 수 있다면 남들보다 2년 남짓의 시간을 앞서 있을 수 있다. 군대를 준비하는 동안 많은 우여곡절이 있었는데 비슷한 처지에 있는 분들께 도움이 됐으면 하는 마음에 글을 작성해본다. 우선 크게 카테고리를 나누자면, 컴공이 노려볼 수 있는 괜찮은 군복무 방법에는 아래와 같은 것들이 있다. 카투사, 육군 기술행정병, 육군 전문특기병, 공군 일반병, 공군 전문기술병, 공군 전문특기병, 산업기능요원, 전문연구요원, 공익 군대는 크게 모집병과 일반병으로 나뉜다. 필자가 설명하는 대부분은 모집병이며 모집병은 아무래도 어느 정도 걸러져 오기에 더 괜찮은 군 생활을 할 확률이 높다. 각 챕터별로 간..

진로 2022.12.13
반응형