
안녕하세요.
신입 개발자(가 되고싶은;; 희망하는🥲) 잡부 Minter입니다.
인사말만 격식체 사용하고 바로 음슴체 들어감
필자는 정말 Java 극혐론자였음
하지만... 객체지향의 정수인 자바를 이해하지 못한다면, 백엔드 개발자가 되기 글렀다는 것을 깨달음
(내가 보기엔 처음 배운 언어가 파이썬인 것도 한 몫 하는 듯;..)
심지어 자바와 스프링을 외면한채 살고 싶어서 Kotlin이라는 선택지도 취했다.
사실 자바도 이해 못하면서, 코틀린이 잘 이해 될리가 없음 ㅠ
결국 돌고 돌아 돌아왔다.. 자바로..
암튼 오류 정정과
건강한 비판은 언제든 환영합니다.
그럼 스프링 극혐자의 스프링과 친해지기 1편 시작합니다.
우선 본격적으로 Spring에 대해 알아보기 전에, Web Server와 WAS에 대해 알아보자.
사실 나는 두 개념이 미친듯이 헷갈린다;;;
굳이 이해하려고 시도 하지 않아서, WAS = Spring, FastAPI 이런 식으로 생각했음
웹서버는 사실 그냥 localhost:3000 이라고 생각한 나 자신^^;; 반성
정적(static) 파일을 전달하고 요청을 WAS로 넘겨주는 서버이다.
대표적인 예시로, ngnix와 apche가 있다.
cf) 정적 파일: css, Javascript, 이미지 등 이미 서버에 저장되어있는 파일. 도중에 변경되지 않는다.
중요: React와 같은 라이브러리, 프레임워크로 작성한 코드가 브라우저에서 바로 실행되는 것이 아니다
function App() {
return <h1> 안녕 ! </h1>
}
위의 예시를 보자.
브라우저는 사실 JSX를 바로 실행 못한다.
빌드 과정을 거쳐 브라우저가 이해할 수 있는 index.html, main.js, style.css 3개의 장 트리오같은 애들을 가져오고 DOM을 생성한다
근데 브라우저 입장에서
얘네를 어케가져옴??
그때 바로 웹서버가 필요하다.
정리하자면 아래가 Web Server의 존재 이유이다.
그럼 웹 서버의 한계는 무엇일까?
WAS(Web Application Server)란 프로그램 코드를 실행하는 서버. 정적 파일을 전달하는 웹서버와 달리 동적인 요청을 담당함
대표적인 예시로 Tomcat, JBoss, Jetty 등이 있다.
사용 목적은 당연하게도.. 내가 아는 백엔드의 업무를 담당한다
여기서 특히 헷갈린 것은 그럼 spring, FastAPI와 같은 프레임워크들은 그 자체로 WAS인가? 라는 것이다
정답은 ❌
WAS 위에서 동작하며, 개발을 용이하게 도와주는 프레임워크이지 이 자체가 WAS는 아닌 것이다.
spring을 공부하다보면 절대 빠질 수 없는 키워드 중 하나이다.
사실 디자인패턴이 어떤 이유에서 필요한지 정확하게 알지 못했다.
디자인패턴의 존재 이유는 불필요한 중복은 줄이고 코드의 유지보수성을 높히기 위함이다
= 좋은 코드를 재사용하기 위해서^^
그럼 본격적으로 MVC 패턴에 대해서 알아보자
Model, View, Controller 각 역할을 분리하여 (= 관심사 분리) 코드를 더 체계적이고 관리하기 쉽게 만드는 아키텍쳐 패턴이다.
| 역할 | 설명 |
|---|---|
| Model | 뷰에 넘길 데이터의 값을 저장하는 객체 |
| View | 사용자에게 보여줄 화면 |
| Controller | 요청을 받아 처리(비지니스 로직 아님)하고, 어떤 뷰를 보여줄지 결정한다. 흐름 제어의 느낌? |
.
.
.
.
.
.
.
.
첫 포스팅 치고 너무 길었다... 지금 눈알 빠질 것 같음...
다음 포스팅때 spring 프로젝트 시작하기로 2탄을 가져오겠습니다.
확실히 메모리 구조와 함께 공부하다보니 머리가 터질 것 같다(바이브코딩의 여파겠지)
바이브코딩이 나쁘다고는 생각하지 않는다.
그러나 최소 피지컬은 만들어 놔야하지 않을까 생각한다.
사소한 단 한 줄의 코드도 내 손으로 수정을 할 수 없고, 토큰을 사용하면서 한다면...
그게 맞을까? 가끔 생각하기도 한다.
3년자 바이브코더보다 3년차 개발자가 바이브코딩을 하는게 나을 수도 있다는 얘기가
나에겐 무척 신선한 충격으로 다가왔다.
아.무.튼..
spring 도전기 아좌좌!!
더 깊게 공부해보도록 하자
다음은 자바 Summer인가요