
4학년 2학기를 마치고 졸업을 앞두고, 여러 부트캠프를 지원하다가 우리 FIS 아카데미 클라우드 엔지니어링 과정에 합격했다! 앞으로 매 주차마다 학습한 내용과 회고를 작성할 예정이다.

출처: 우리 FIS 아카데미 홈페이지 https://woorifisa.com/
백엔드 개발자 취업을 희망하고 있던 와중에, 도커와 쿠버네티스가 궁금해졌고 새로운 기술을 공부하고 싶어서 클라우드 엔지니어링 과정을 지원하게 되었다.
앞으로 5개월간 오전 9시부터 오후 6시까지 혹독한(?) 교육 과정을 수강할 예정이다...
1주차 교육 과정의 한 축은 자바였다. 아무래도 교육 과정의 마지막 부분에 프로젝트를 진행하기 때문이었을까, 자바 스프링 기반의 백엔드 개발을 위해 자바에 대한 학습이 진행되었다.
자바 개발을 위한 IDE로 Spring Tool Suite, 줄여서 STS 라고 부르는 툴을 사용하였다. 이클립스 기반 스프링 애플리케이션을 개발 하기 위한 개발 환경이라고 한다.
맨날 인텔리제이만 사용하다가 정말 오랜만에 이클립스를 사용해 보니 역체감이 엄청났다. 스마트폰을 사용하다가 피쳐폰으로 다시 돌아간 느낌이랄까..
대학교 1학년 때 메모장으로 코딩을 시키던 자바 교수님이 생각났다. 기술의 편리함에 너무 익숙해졌던 나를 다시 되돌아보게 하는 그런 툴이다.
항상 빌드 툴로 gradle을 사용했던 나에게는 Maven은 새로웠다. 여러 라이브러리를 사용할 수 있으려면 이 Maven이 제공하는 pom.xml에 dependency를 추가하면 된다.

처음 Maven 프로젝트를 생성하고 기본적으로 제공되는 pom.xml에는 오류가 있다.
xml namespace의 모든 http:// 로 시작하는 url을 https:// 로 변경해줘야 정상으로 작동한다.
강의장에서는 개인 노트북으로 LG 그램을 제공하지만 나는 기존에 쓰던 맥북을 사용하였다. STS를 설치하고 강의에서 설명한 대로 의존성을 추가했지만 전혀 동작하지 않았다.

빨간 줄이 생성될 때마다 마우스를 올려보고 문제를 해결하려 노력한 결과
일단 module-info.java에 내용을 기록하면 정상적으로 라이브러리를 사용할 수 있다는 것을 깨달았다.
그 이유와 정확한 방법은 더 찾아봐야 알 것 같다.
1주차 과정의 다른 축은 리눅스 개발이었다.
리눅스 설치와 명령어, 여러 툴들에 대해 배웠다.
우선 윈도우 상에서 리눅스를 사용하기 위해 VirtualBox 를 설치하고, 그 위에 Ubuntu 22.04 LTS 를 설치하였다.
우분투도 데스크탑 버전이 아니라 명령어로 동작하는 서버 버전을 설치하였다.
이후 SSH 연결을 위해 MobaXterm 을 설치하는 과정을 학습하였다.
하지만 MobaXterm은 윈도우 버전만 존재하였고, Mac에서는 기본 터미널로 리눅스에 연결하는 것이 가능했기 때문에 필자는 다른 방식을 채택하였다.
Linux 설치를 위한 가상환경으로는 UTM 을 사용하였고, 기본 터미널로 쉽게 연결이 가능하였다.
ssh 계정@접속할서버 -p 포트 -L 로컬에서사용할포트:대상서버정보:포트
예) ssh username@127.0.0.1 -p 22 -L 3306:localhost:3306
ls : 현재 디렉토리의 파일 및 폴더 정보 표시$ ls -al (-arlst) 등의 옵션으로 상세 정보 확인 가능.
권한 및 디렉토리 유무 파악 가능.
drwxr-x---: 디렉토리, read와 execute 권한
-rw------- : 파일, read와 write 권한
tree : 디렉토리 형태를 한 눈에 보기 쉽게 표현mv : 파일 이동 mv fisa2.txt fisa: fisa2.txt 파일을 fisa 폴더로 옮기기
mkdir : 디렉토리 생성cd : 현재 작업 환경 이동whoami : 현재 유저 이름 출력history : 명령어 기록 출력ifconfig : ip 정보 출력. 윈도우에서는 ipconfigclear : 콘솔 창 초기화불필요한 코드를 줄일 수 있는 라이브러리.
어노테이션 기반의 코딩을 가능하게 해 준다.
생성자, Getter, Setter를 입력하지 않아도 된다.
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class Customer {
public String id;
public String pw;
public int age;
public String grade;
}
@NoArgsConstructor : 매개변수가 없는 기본 생성자를 만듦.@AllArgsConstructor : 모든 필드 변수를 파라미터로 받아 초기화하는 생성자를 만듦.@Getter, @Setter : Getter, Setter 메서드 생성@RequiredArgsConstructor : final이 붙거나 @NonNull 이 붙은 필드의 생성자를 만듦.@ToString : toString() 메서드 생성@ 로 시작하는 java문법을 어노테이션이라고 한다.@(At) 객체의 생성 과정을 단순화하고 유연하게 하기 위한 디자인 패턴.
@Builder 어노테이션빌더 패턴을 적용할 수 있도록 빌더 클래스를 생성한다.
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@Getter
@ToString
@Builder
public class Person {
private final String name;
private final int age;
private final String address;
}
public class Main {
public static void main(String[] args) {
Person person = Person.builder()
.name("Park")
.age(15)
.address("서울")
.build();
System.out.println(person);
}
}
.name().age().address() 와 같이 연속적으로 사용 가능자바에서 문자열을 다루는 클래스는 String 클래스이다.
이는 int, byte 등과 같은 primitive type과는 다르게 객체로 취급된다.
이미 생성된 String 객체의 메모리 데이터는 업데이트가 불가하다. 즉, 무조건 메모리에 새로 생성된다는 뜻이다.
하나의 변수로 다수의 데이터를 관리하는 자료구조
배열 생성 문법: int[] i = {값1, 값2, ...}
멤버 변수 , 객체 생성시 heap 영역 내부에 생성로컬 변수 로컬 변수로컬 변수로컬 변수멤버 변수 : Heap에 생성된 값에 한해서만 기본 값으로 자동 초기화
| 데이터 타입 | 초기화 값 |
|---|---|
| 정수 | 0 |
| 실수 | 0.0 |
| boolean | false |
| char | 'u0000' |
| 참조 | null |
로컬 변수 : 자동 초기화 되지 않음, 선언 시 초기화 권장
배열은 로컬 변수이지만 값을 각 index 별로 초기화하지 않아도 자동으로 초기화가 기본적으로 진행된다.
미니 프로젝트 주소 : https://github.com/jiione/step04_miniProject
1주차 마지막 날에는 배운 내용을 토대로 미니 프로젝트를 진행하였다.
주제는 콘솔로 동작하는 도서관 및 유저 관리 서비스이다.
builder 패턴을 사용한 모습.

프로젝트 구조, MVC 패턴을 적용하려고 노력했다.

항상 방학만 되면 새벽 3~4시 취침 - 오후 1시 기상 생활 패턴을 유지하던 나에게 9시 출근 ~ 18시 퇴근이라는 회사원의 시간표는 매우 혹독하다고 생각하였다. 실제로 몸이 엄청 피곤했고, 퇴근하고 기절할 때도 있었다.
하지만 같은 조가 된 다른 분은 집이 하남이었고, 5시 반에 기상해서 편도로 2시간 정도 거리를 왔다갔다 하시는 걸 보고 힘들다고 생각했던 내가 부끄러워졌다.
또한 강사님의 체력에 감탄하였다. 9시부터 6시까지 수업을 쭉 진행하시고 말을 계속 하셔야 했는데 정말 쉽지 않은 일이라고 생각했다.
세상에는 정말 열심히 사는 사람이 많다고 느낀 1주차였다.
다른 부트캠프보다 우리FISA를 택한 이유는 100% 대면 수업이라는 장점이 있기 때문이었다.
비대면 수업을 겪었던 경험을 비추어 보았을 때 개인적으로 아쉬운 점이 많았다.
반면 대면 수업의 장점은?
이러한 이유로 대면 수업을 선호하곤 했다.
추가적으로 교육장이 매우 쾌적하다. 더운 여름철이지만 에어컨을 정말 빵빵하게 틀어줘서 너무 시원하다.
교육장의 위치 또한 회사원들이 많은 상암이라 주변 맛집을 탐방하는 재미도 있다.
점심시간에 주변을 돌아다니면 회사원들이 많은 풍경인 것이 신기했다.
종종 각 조별로 배운 내용에 대한 퀴즈를 내어 서로 맞춰보게 하는 시간을 가졌다.
같은 내용을 공부해도 서로 다른 문제를 낸다는 점이 흥미로웠고, 서로의 문제를 맞추는 것과 동시에 문제에 대한 피드백을 주고받으며 놓쳤던 부분에 대해 이야기를 나누는 것이 재미있었다.
금요일에는 배운 내용을 토대로 미니 프로젝트를 진행하였다.
Git을 오랜만에 써서 충돌이 나는 일이 비일비재했고 머리가 아프기도 했지만,
오랜만에 해커톤을 하는 느낌을 받아 재미있었다.
같은 조원 분들이 다들 열심히 하셔서 좋은 결과를 낼 수 있었고, 배운 내용을 복습하고 체화시키는 데는 직접 무언가 만들어보는 것이 최고라는 것을 깨달았다.
다른 분들도 꽤나 퀄리티 있는 결과물을 몇 시간 만에 내는 것을 보고 놀랍다고 생각했다.
앞으로 더 열심히 해야겠다는 생각뿐이다.