Archive(기록물 보관소) File은 종종 파일 및 폴더의 압축된 형태를 가리키기도 합니다. 이것은 파일 크기를 줄이고 파일을 묶어서 보관하거나 전송하기 위한 목적으로 사용됩니다. 알려진 압축 형식에는 ZIP, RAR, TAR 등이 있습니다 → 압축 파일이라고 생각하면 된다
📝tar
리눅스에서 사용되는 압축방식으로 용량을 압축하지는 않습니다
덕분에 매우 빠르게 압축이 진행되고 CPU 사용률도 높지가 않습니다 그래서 tar를 사용하면 순식간에 압축 파일이 생성 됩니다
📝gzip (.gz)
리눅스에서 용량을 줄여서 압축할때 사용하는 방식
📝War (Web Application Archive)
Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷으로 웹 관련 자원이 포함 되어있다 → JSP, Servlet, JAR, Class, XML, HTML, Javascript
별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요하다 즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.
📝Jar (Java Archive)
JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 라이브러리라고 생각하면 된다
SpringBoot에서는 일반적으로 배포할 때 Jar를 사용하는데 JSP를 사용하거나 등의 이유가 아니면 War가 아닌 Jar로 개발하는게 좋습니다
스프링프레임워크를 쓰며 스프링프레임워크에서 만든 걸 쓰는게 좋다 (스프링이 아니라 그 안에서 서블릿을 쓴다는 등에 행위는 지양하는 게 좋음) 그리고 웬만해서 유명한 걸 써라
📝개발자는 자기 영역에만 최선을 다한다
개발은 기본적으로 잘해야(다양한 기술 선택지)하며 같이 협업하는 기획자, 디자이너 등… 다양한 직군 존중을 해야한다 만약 정말 필요한 의견을 낼 때는 상대방의 허가 또는 조심스럽게 양해를 구하며 이야기를 한다
📝라이브러리를 활용할 때 공식버전의 라이브러리를 사용하고 의존적이지 않는게 좋다
예를 들어서 Oracle DB에서 제공하는 테스트 함수가 있고 Java표준인 Javax의 테스트 함수가 있는데 Oracle DB에서 제공하는 테스트 함수를 사용할 경우 여러가지 Side Effect가 생길 수 있다길 수 있다. 만약 MySQL로 변경했을 때 MySQL에 있는 테스트 함수는 Oracle이나 다르거나 없을 경우 모든 코드를 수정해야할 수 있다 그리고 스프링의 의존적이면 스프링 프레임워크가 구축되어야 테스트나 할 수 있기 때문에 제약사항이 많이 생긴다 [스프링 점유율이 어마무시해서 이 부분은 거의 Trade off 가 없긴 하다]
📝공부는 복리이다
빨리 배우는게 좋다 앞서 배운 내용으로 다음 공부를 하기 수월해진다
📝사용하는 제품의 호환성을 따져라
어떤 버전을 쓰느냐는 정말 중요하다 여러 프로그램을 쓸텐데 그 프로그램들 끼리 버전호환이 안 되면 잘 만들었어도 안 돌아간다
예) jdk 버전이 다른 경우 , 톰캣 버전이 다른 경우 등...
📝API 등 비즈니스 로직을 만들 때 다른 이상한 값을 못 넣게 아예 사전에 차단하도록 설계해라
예를 들면 Code를 String으로 선언한 경우 01, 02 이렇게 넣어야하는 경우 어떤 사람이 04 이런식으로 넣어서 문제를 일으킬 수 있다. 만약 Enum을 이용한 자료구조를 사용한다면 사전에 에러를 방지할 수 있다
운영 디비에는 접근 못하도록 막던가 계정 권한을 달리주는 등 반드시 필요한 조건이다
📝나의 프로젝트를 공유할 때 WAS와 IDE도 같이 배포한다.
위와 같이 제품 호환성 때문에 다른 환경에서도 돌아가기 위해서 IDE(이클립스)와 1개의 프로젝트(workspace)와 1개의 WAS(Tomcat)를 세트로 묶어서 제공해준다.
📝여러번 확인하기
문서를 배포하든 프로그램 테스트를 하든 문자를 보내든 여러번 검토한다.
문자나 이메일의 경우 2 ~ 3번 정독을 하고 문서를 배포할 때도 2 ~ 3번 정독을 한다.
프로그램 테스트를 하고 문제가 생겨서 고친 후에는 다시 처음부터 테스트를 다시 시작한다. (관계 있는 부분 즉, 영향을 받는 부분은 모두 다시 테스틀 처음부터 다시해야한다)
📝문서화를 잘 해라
API 명세 등 아무것도 모르는 상대방이 읽었을 때 읽기 쉽고 이해하기 쉽게 만들어야한다.
📝버그가 일어날 시
해당 버그 원인 파악 후 직접 재연 후 해당 버그 고치고 다시 해당 버그 재연해 테스트해 문제 없음 증명 후 배포한다.
📝피드백을 잘해라
내가 하는 일이 맞는지 능동적으로 움직이며 체크한다 (내가 하는 일이 이게 맞는지 상사에게 체크를 한다)
📝외부 일정은 최대한 길게 잡아라
아직 고민중... 하지만 너무 짧게 잡지는 마라... 전 회사가 너무 병신같아서 5일 걸릴 일 하루만에 끝내라고 한 경우가 부지기수라 밤새서한 적도 부지기수였음
📝데이터 관리를 잘해라
값을 넘겨받을 때 "빈값"인지 체크하고 Default 값을 넣던가 반드시 필요한 값이면 required로 에러를 방지해야한다
📝개인면담을 가져라
팀장인 경우 개인 면담을 가져서 일에 대한 불만 및 이슈사항이 있는지 체크를 해야하고 개선해야 한다.
📝말 잘 하는 법
예시를 들며 설명하고 맨 마지막에 결론을 한 번 더 이야기하기
상대방의 이야기를 듣고 생각한 다음에(3초 이상+심호흡) 이야기하기 [재촉시에는 잠시만요 컨트롤하기]
아이컨택과 제스처가 중요하다
여러 사람과 이야기할 때는 한 문단씩 이야기하면서 시선을 옮겨가며 이야기하기
📝DB 설계
너무 큰 확장성을 고려한 설계는 독이 될 수 있으므로 조심해야한다.
📝프로젝트 산정일 설정
야근해서 개발을 마치거나 미리 리소스를 크게 잡아 일을 시작하게 되면 개발자나 회사 모두에게 부담이 될 수 있기 때문에 개발자는 자기자신의 개발 속도를 객관적으로 판단할 수 있는 능력이 필요하다 → 자신의 실력 및 맡은 일이 어느정도 공수가 드는지 알 수준이 되어야 판단할 수 있다 즉, 어떤 일이고 어떤 프로세스로 돌아갈 지 사이드이펙트 등 많은 경우의 수가 떠올라야한다
📝실력이 늘지 않는다
적절하지 않은 난이도
너무 낮으면 지루함을 느끼고 너무 높으면 불안감을 느끼게 되니 알아서 조절을 잘 해야한다
높은 경우는 버텼을 때 차라리 도움이라도 되는데 너무 낮으면 진짜 정체다
회사 문화
새로운 기술을 두려워하지말며 적용시키며 피드백을 받고 실수를 고쳐나갈 수 있는 환경이 필요하다 즉, 실수를 잘 들어줄 수 있는 회사 환경이 중요하다
본질을 이해해라
그냥 무작정 가져다 쓰는게 아니고 심도 있게 이해를 한다면 [데이터의 흐름 등...] 다른 프레임워크나 기술을 쓰더라도 많은 도움이 된다
근래들어 L7을 많이 이용하고 이전에 많이 사용하던 장치는 L4였습니다. (L7, L4는 기계 장치입니다.)
서버 부하 분산을 위해 로드밸런서를 이용합니다.
물리적 프로세서 간에 작업을 스케줄링 해 놀고 있는 장비에 분산시켜 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 말합니다.
📝NAT(Network Address Translation)
내부 네트워크의 사설 IP 주소를 외부 네트워크에서 사용할 수 있는 공인 IP 주소로 변환해줍니다. 공유기나 라우터 같은데에서 사용되는 기술입니다.
📝NAT 테이블
내부 네트워크에서 요청 트래픽이 어디서 왔고 어디로 가야하는지를 기록합니다. 기본적으로 자동적으로 NAT 테이블은 생성됩니다. 예를 들면 내부 로컬 PC에서 어떤 사이트를 접속하면 그 사이트로 요청을 보낼테고 그 응답을 공인 IP를 거쳐서 로컬 PC로 보내야하는데 여러대일 경우 어디로 가야할지 모르기 때문에 그걸 도와주는 역할을 한다.
📝NAT (가상화)
호스트 PC인 내 로컬 PC가 게이트웨이 역할을 하며 내 PC를 통해서 데이터가 나가기 때문에 내 로컬 PC가 공유기처럼 되며 직접 사설 IP를 할당해줘서 실제 공유기가 내려주는 사설 IP랑 다른 대역대를 가진다. (로컬 PC 사설 IP 대역이 192.168.1.0/24일 경우 이거랑 다른 대역대를 가지게 된다.)
📝브리지 (가상화)
공유기가 주는 사설 IP를 그대로 할당 받는다. 그래서 로컬 네트워크에 포함된 형태이며 직접 통신합니다. (사설 IP 대역이 192.168.1.0/24일 경우 이 내에서 받게 된다.)
📝IP공유기
최대 255개의 장치까지 IP 주소를 할당해줄 수 있습니다. 또한 무선기능도 지원해줍니다.
공유기를 보면 색이 다른 곳이 있는데 모뎀에서 받은 메인 랜포트를 꼽는 곳입니다.
다른 포트들에 컴퓨터와 같은 장치들과 랜선을 연결하면 IP주소(사설IP)가 분배되어 인터넷 사용이 가능해집니다.
하지만 일반적인 가정에서 포트가 4개이기 때문에 더 많은 랜포트를 이용하기위해서 스위치허브가 필요합니다.